home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacFormat 1995 May
/
macformat-024.iso
/
Shareware City
/
Developers
/
gestalt-selectors-27
/
gestalt-selectors-27.etx
Encoding:
Amiga
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
NeXTSTEP
RISC OS/Acorn
UTF-8
Wrap
Text File
|
1995-01-02
|
206.7 KB
|
4,929 lines
|
[
TEXT/R*ch
]
Gestalt Selectors List 2.7
==========================
First published: 12 October 1992, 13:15 CET (GMT+1)
Last modified : 2 Januari 1995, 11:30 CET (GMT+1)
This document lists all selectors for use with the Gestalt Manager known to
the editor. These can include selector codes installed by Apple (system)
software or by software from third and so called "fourth" parties (your
software?).
The information in this list is useful for programmers and other people who
can use the Gestalt Manager with their software perhaps even using
externals (with HyperCard, 4th Dimension etc.).
This file can be best viewed with a mono-spaced font like Monaco. Because
it is wrapped as setext you can use several utilities to index and read it.
For the Macintosh you can use Easy View and on a UNIX system sv (setext
viewer) works fine. Both are available by FTP from sumex-aim.stanford.edu
(or its mirrors!), archived respectively as:
info-mac/text/easy-view-250.hqx
info-mac/text/setext-viewer-05-unix.uu
A single question mark indicates an uncertainty regarding the information
in front of the question mark. Three question marks indicate complete
absence of the information.
See for more information about this list the chapters at the end.
Contents
--------
Gestalt Selectors List
Contents
Contributions
Changes Overview
Gestalt Selector Codes
Apple System Software (A-F)
Apple System Software (G-L)
Apple System Software (M-Q)
Apple System Software (R-Z)
Apple Additional Software
Third Parties Software
Unknown Gestalt Selector Codes
Apple Software
Third Parties Software
Gestalt Manager Calls
Gestalt Manager Routines
Undocumented Gestalt Manager Routines
Gestalt Value Routines
Kilo-liners
Direct Gestalt Calls
Direct GestaltValue Calls
GestaltSelectorZero
GestaltBitTest
Call Gestalt Function Direct
Reports
AppleShare File & Print Server selector codes
AppleTalk
Copy protection using Gestalt
Environs & SysEnvirons
Executor Mac-emulator
Gestalt Apple Event
GestaltValue
Glue code
PPC Libraries
QuickTime
RAM Doubler
General Info
System Managers
Gestalt Problems
History
Abbreviations
Sources
Related Software
URL
Definitions and Format
Use in Language
Definitions
Format Selector Entry
Format Version Numbers
About this list
Availability
Acknowledgements
Legal Stuff
Editors' Address
Contributions
-------------
This section lists the people who contributed information which is now
included with this version of the list.
===========================================================================
Contributions to the selector sections
===========================================================================
Person Software Selector(s) added/changed
---------------------------------------------------------------------------
Anonymous(s) ColorSync ext cmtc
FileSaver cp PNfs
Martin Bestmann System (enablers) evnt
John Champion A La Carte ext AlaC
Mike Cohen System (enablers) mach
John Mancino Remote Access strm
Mark Nagata Dialog View cp DlgV, LFnt
KeyQuencer KQae, KQue
Marco Piovanelli System (enablers) os
Dave Radcliffe System (enablers) cput
Rene G.A. Ros Apple Guide/Reno reno
Apple Menu Options HAM
AppleShare afps
At Ease app pxtn
CDMenu cp CDmn
ColorSync ext cmtc
Control Strip cp sdev
Debugger INIT ext NubA, NubD, NubH, NubV
GestaltValue glue code gval
Mount'em/Drop Disk app ddsk, mtem
Mouse cp octb
PC Exchange vdrc
PC Setup? cp a pc
PowerTalk Manager ext oceu
PPPReport cp EDCN
QuickTime ext qtim
Shared Library Manager ext
aslm
SpeedyFinder7 Extension UhOh
System ? scrf, tpad, tv
System (enablers) cput, idsp, fxfr, mach,
micn, proc, tele, tsma
Video Player app/Video Startup ext
mtv2, tv
WorldScript II lang, lngb
unknown cuda, iic
Alex Rosenberg HAM ??? HAM
System (enablers) ctbv, fxfr, icon, tabl,
tele, nlup
Marc Schrier System (enablers) mach
Brian Stern SpeakAlert cp SPAL
---------------------------------------------------------------------------
===========================================================================
Contributions to the non-selector sections
===========================================================================
Person Chapter/Section
---------------------------------------------------------------------------
Lawrence D'Oliveiro General Info/System Managers
John Mancino General Info/System Managers
Marco Piovanelli General Info/System Managers
Rene G.A. Ros About this list/Legal Stuff
Definitions and Format/Symbolic Names Suffixes
General Info/Gestalt Problems
General Info/Related Software & URL
General Info/System Managers
Gestalt Manager Calls/Gestalt Value Routines
Reports/Gestalt Apple Event
Alex Rosenberg Gestalt Manager Calls/Gestalt Value Routines
---------------------------------------------------------------------------
Changes Overview
----------------
Added selectors
Apple System : tele, tsma
Apple Add. : -
Third Parties : PNfs
Added unknown
Apple Softw. : cuda, ddsk, iic , lngb, NubA, NubD, NubH, NubV, scrf
Third Parties : CDmn, EDCN, UhOh
Changed selectors
Apple System : cmtc, cput, ctbv, fxfr, gval, icon, mach, os , proc,
qtim, sdev, vers
Apple Add. : cmtc, strm
Third Parties : -
Changed unknown
Apple Softw. : a pc, afps, aslm, HAM , idsp, lang, mtem, pxtn, vdrc
Third Parties : DlgV, KQae, KQue, LFnt
Previously unknown
Apple System : reno, tpad, tv
Apple Add. : mtv2
Third Parties : AlaC, SPAL
Includes updates 2.6.1 up to and including 2.6.6, sent to subscribers of
the mailing list.
A number of chapters are now sections, which should increase the usability
of the GSL when using a setext viewer (like EasyView).
Several changes where made to the layout and information because of
comments and suggestions I received with a survey of the subscribers of
the mailing list.
Several corrections were made to a number of entries regarding installed
software versions, package names ('part of') and companies.
Prepared GSL for automatic extraction of declarations into a
Gestalt header file:
- added 'const' to all parts declaring symbolic names;
- most source references are now part of the comments;
- grouped all declarations together, ending with an empty line or a line
starting without leading spaces.
It may take some time before I start writing an application/script to do
the extraction. It should also be able to convert it to C. But I have to
finish some other projects (incl. school) first!
The GestaltValueDispatch A-trap is implemented with System 7.5 final (not
'finally'!) and the following selectors are now installed using
GestaltValue:
bugx, bugy, bugz, conn,
crm , ctbv, ditl, edtn,
fs , fxfr, nlup, pop!,
stdf, tele, term, vers
Also, the Performa 61xx types are released and now in the appropriate part
of the 'mach' entry.
Gestalt Selector Codes
======================
The following sections list selector codes of which the meaning is know.
For easier reading when using a setext viewer the 'Apple System Software'
section has been divided into four groups grouped on the first character
of the selectorcode (A-F, G-L, M-P and Q-Z).
Apple System Software (A-F)
---------------------------
a/ux (A/UX [2.0?])
(System [6.0.4])
gestaltAUXVersion
Returns the version of A/UX, if it is executing, as BCD?
const
gestaltAUXVersion = 'a/ux'; {A/UX version, if present}
NOTES:
If Gestalt doesn't know the answer, test bit 9 of the HWCFgFlag
system global ($0B22; word). if it is, assume you have A/UX 1.0.
This selector also indicates if you're running under MAE on an
UNIX machine. *AD08
addr (System [6.0.4])
gestaltAddressingModeAttr
Returns information about the current addressing mode.
const
gestaltAddressingModeAttr = 'addr'; {addressing mode attributes}
gestalt32BitAddressing = 0; {started up with 32-bit addr.}
gestalt32BitSysZone = 1; {system heap has 32-bit clean}
{ block headers}
gestalt32BitCapable = 2; {machine is 32-bit capable}
alis (System [7.0])
(Remote Access Aliases ext [1.0?], part of Apple Remote Access)
gestaltAliasMgrAttr
Returns information about the Alias Manager.
const
gestaltAliasMgrAttr = 'alis';{Alias Mgr attributes}
gestaltAliasMgrPresent = 0;
gestaltAliasMgrSupportsRemoteAppletalk = 1; {supports Remote}
{ Appletalk *AD02}
gestaltAliasMgr??? = 2; {since System 7.1 Pro}
NOTE: See 'Reports' chapter (QuickTime section) for more information.
ascr (AppleScript ext [1.0])
gestaltAppleScriptAttr *AS08
Returns information about AppleScript.
const
gestaltAppleScriptAttr = 'ascr'; {AppleScript attributes}
gestaltAppleScriptPresent = 0;
gestaltAppleScriptPowerPCSupport = 1;
ascv (AppleScript ext [1.0])
gestaltAppleScriptVersion *AS08
Returns the version of AppleScript as NumVersion.
const
gestaltAppleScriptVersion = 'ascv'; {AppleScript version}
NOTE:
AppleScript 1.1 returns $01100110 which doesn't look like a proper
version number (version 1.0 returned $01008000). (Rene Ros)
atkv (System [7.0, AppleTalk 56])
gestaltATalkVersion *AT02
Returns AppleTalk version as NumVersion.
This is different from 'atlk' !
const
gestaltATalkVersion = 'atkv'; {AppleTalk version *AD01/M01}
WARNING:
This selector returns the majorRev field of the NumVersion record as
hexadecimal instead of the usual BCD.
NOTE: See 'Reports' chapter (AppleTalk section) for more information.
atlk (System [6.0.4])
gestaltAppleTalkVersion
Returns the version of the .MPP driver as INTEGER.
const
gestaltAppleTalkVersion = 'atlk'; {AppleTalk version}
aucd (Audio CD Access ext [4.0], part of Apple CD-ROM Software) *AT03
gestaltAudioCDAccessVersion?
Returns Audio CD Access version as BCD.
const
gestaltAudioCDAccessVersion? = 'aucd'; {Audio CD Access version}
NOTE: The returned version is obtained from 'vers' resource ID# 1.
BSDa (CloseView cp [???], by Berkeley Systems, Inc.)
gestaltCloseViewAttr
Returns information about the CloseView Control Panel.
const
gestaltCloseViewAttr = 'BSDa'; {CloseView attributes}
gestaltCloseViewEnabled = 0;
gestaltCloseViewDisplayMgrFriendly = 1; {Closeview compatible}
{ with Display Manager}
{ (FUTURE) *AS05}
cash (System [???]) *S03
gestaltRAMCacheSize
Returns byte-size of physical RAM allocated to Disk Cache.
0 = Disk Cache Off
const
gestaltRAMCacheSize = 'cash'; {RAM cache size}
NOTE:
This selector is listed in THINK Reference 1.0 but it is unknown which
System Software version should install it.
cfrg (System [7.1.2?])
gestaltCFMAttr
Returns information about the Code Fragment Manager machines.
const
gestaltCFMAttr = 'cfrg'; {Code Fragment Mgr attributes}
gestaltCFMPresent = 0; {Code Fragment Manager is present}
NOTE:
Don't rely on the presence of CFM along to check for a PowerMac. The
CFM will likely appear on 680x0 platforms as well. (Dave Falkenburg)
cmta (ColorSync ext [1.0.4?]
gestaltColorMatchingAttr *AD09
Returns information about the ColorSync Utilities?
const
gestaltColorMatchingAttr = 'cmta'; {Color Matching Attributes}
gestaltHighLevelMatching = 0; {BeginMatching &}
{ DrawMatchedPicture
{ present}
gestaltColorMatchingLibLoaded = 1; {Native PowerPC shared}
{ library is loaded. a.k.a.}
{ gestaltSharedLibLoaded?}
cmtc (ColorSync ext [1.0?])
gestaltColorMatchingVersion
Returns the version of the Color Matching software as BCD.
const
gestaltColorMatchingVersion = 'cmtc'; {Color Matching version}
gestaltColorSync10 = $0100; {*AD09}
gestaltColorSync11 = $0110; {*AD09}
gestaltColorSync104 = $0104; {*AD09}
gestaltColorSync105 = $0105; {*AD09}
gestaltColorSync20? = $0200; {*AD17}
NOTE:
ColorSync 1.0 returns gestaltColorSync10 for the version of the
utilities that work with System 6.0.7. And gestaltColorSync11 is
returned by the version that works with System 7.0 and later.
From version 1.0.4 up the correct version is returned. *AD17
conn (System [7.0])
gestaltConnMgrAttr
Returns information about the Connection Manager.
const
gestaltConnMgrAttr = 'conn'; {Conn. Mgr attributes}
gestaltConnMgrPresent = 0; {Connection Mgr is present}
gestaltConnMgrCMSearchFix = 1; {fix for CMAddSearch present}
gestaltConnMgrErrorString = 2; {has CMGetErrorString *AS02}
gestaltConnMgrMultiAsyncIO = 3; {CMNewsIOPB,CMDisposeIOPB,}
{ CMPBRead,CMPBWrite,CMPBIOKill}
{ *AS02}
NOTE:
With System 6, this Gestalt selector isn't implemented when the
Communications Toolbox is installed. (Michael Hecht)
cpkr (Color Picker ext [2.0?])
gestaltColorPickerMgrAttr
Returns information about the Color Picker Manager.
const
gestaltColorPickerMgrAttr = 'cpkr'; {ColorPicker Mgr attributes}
gestaltColorPickerMgrPresent? = 0?; {ColorPicker Mgr Present}
(Marco Piovanelli, Lawrence D'Oliveiro)
NOTE:
Extension version 2.0a4 returns a response ($0x0001) which is
according to the info above. Version 2.0a5 however returns $0x0100, is
this an error?
cpnt (System [7.1])
(Color Picker Extension ext [2.0])
(Color Sync ext [1.0.4?])
(Macintosh Easy Open cp [1.0?])
(QuickTime ext [1.0])
(Speech Manager ext [1.1.1, not 1.2?])
gestaltComponentMgr
Returns Component Manager version as INTEGER.
const
gestaltComponentMgr = 'cpnt'; {Component Mgr version *AS01}
cput (System [7.1.2?]) *AS04/AS05
gestaltNativeCPUtype
Returns a value that indicates the type of native processor that is
currently running.
const
gestaltNativeCPUtype = 'cput'; {Native CPU type}
{Motorola Architecture}
gestaltCPU68000 = 1;
gestaltCPU68010 = 2;
gestaltCPU68020 = 3;
gestaltCPU68030 = 4;
gestaltCPU68040 = 5;
{PowerPC Architecture}
gestaltCPU601 = $0x101;
gestaltCPU603 = $0x103;
gestaltCPU604 = $0x104;
gestaltCPU620? = ???;
NOTE:
To check whether the native system architecture is a MC680x0 or a
PowerPC use the gestaltSysArchitecture ('sysa') selector. See for
more information on the 68K processors the gestaltProcessorType
('proc') selector.
The GestaltEqu.h file published with E.T.O. #12 was replaced by the
one on E.T.O. #13. However there was made a mistake, it lists the 68K
values in the range 0-4 while it should be 1-5 as listed above.
This problem is acknowledged by Apple.
You can fix this problem by using the declarations listed above or by
using the GestaltEqu.h file from E.T.O. #13 but then test first the
gestaltSysArchitecture ('sysa') selector and when it reports a 68K
machine use gestaltProcessorType.
However, System 7.5. was apperantly created using the incorrect header
file and returns the incorrect values. Example: 'cput' returns 3
and 'proc' returns 4.
(Dave Radcliffe, Roland Mansson, Rene Ros)
crm (System [7.0])
(Communications Toolbox for System 6)
gestaltCRMAttr
Returns information about the Communications Resource Manager.
const
gestaltCRMAttr = 'crm '; {Comm. Resource Mgr attributes}
gestaltCRMPresent = 0; {Comm. Resource Mgr present}
gestaltCRMPersistentFix = 1; {fix for persistent tools *AS02}
gestaltCRMToolRsrcCalls = 2; {has CRMGetToolResource/}
{ ReleaseToolResource *AS02}
csvr (Control Strip cp [1.0], part of PowerBook Utilities)
gestaltControlStripVersion
Returns the version of Control Strip software that is installed as
NumVersion.
const
gestaltControlStripVersion = 'csvr';
WARNING:
Control Strip 1.0 used to install the 'sdvr' selector (which is used
by PowerTalk) instead of this selector to return the version. This is
corrected when the gestaltControlStripAttr ('sdev') selector has bit
gestaltControlStripVersionFixed set (unknown which version sets it).
No written documentation found, based on header file. *AS11 (Rene Ros)
NOTE:
Control Strip displays a row with icons and popup menus to quickly
change settings on portable macs, i.e. AppleTalk and the sound volume.
ctbm (System [7.0])
(Communications Toolbox for System 6)
gestaltCTBManagersAttr
Returns information about the Communications Toolbox Managers, it is a
bitmask of which managers are present.
const
gestaltCTBManagersAttr = 'ctbm'; {Comm. Mgrs attributes *S02}
ctbu (System [7.0])
(Communications Toolbox for System 6)
gestaltCTBUtilsAttr
Returns information about the Communications Toolbox Utilities.
const
gestaltCTBUtilsAttr = 'ctbu'; {Comm. TB Utils attributes *S02}
gestaltCTBUtilsPresent = 0; {*S02}
ctbv (System [7.0])
(Communications Toolbox for System 6)
gestaltCTBVersion
Returns the version number of the Communications Toolbox.
const
gestaltCTBVersion = 'ctbv'; {Comm. Toolbox version}
NOTE:
With the Power Macintosh the Communication Toolbox returned a Gestalt
value indicating version 1.1 while the ROM actually had version 1.0.
This is fixed by the PowerPC Enabler 1.0.1. and the PowerPC Upgrade
Card Enabler 1.0.1. because they install CTB 1.1. *AT06
As of System 7.1, the version of the CTB should track the System
version. The PowerMac ROMs handled this incorrectly and System 7.5
rectifies this by reporting 7.5.0. (Alex Rosenberg)
dbac (System [7.0])
gestaltDBAccessMgrAttr
Returns information about the Data Access Manager.
const
gestaltDBAccessMgrAttr = 'dbac'; {Data Access Mgr attributes}
gestaltDBAccessMgrPresent = 0; {TRUE if Data Access Mgr present}
dfnd (PowerTalk ext [1.0?], part of PowerTalk)
gestaltSDPFindVersion
Returns the SDP Find version as INTEGER.
const
gestaltSDPFindVersion = 'dfnd'; {SDP Find version}
dict (System [7.1])
gestaltDictionaryMgrAttr
Returns information about the Dictionary Manager.
const
gestaltDictionaryMgrAttr = 'dict'; {Dictionary Mgr attributes}
gestaltDictionaryMgrPresent = 0;
ditl (System [7.0])
gestaltDITLExtAttr
Returns information about the Dialog Manager.
const
gestaltDITLExtAttr = 'ditl'; {Dialog Mgr attributes}
gestaltDITLExtPresent = 0; {Dialog Mgr extensions present}
dplv (Display Enabler [1.0?])
(System [7.1.1])
gestaltDisplayMgrVers *AS05
Returns Display Manager version as INTEGER?.
const
gestaltDisplayMgrVers = 'dplv'; {Display Mgr version}
dply (Display Enabler [1.0?])
(System [7.1.1])
gestaltDisplayMgrAttr *AS05
Returns information about the Display Manager.
const
gestaltDisplayMgrAttr = 'dply'; {Display Mgr attributes}
gestaltDisplayMgrPresent = 0; {True if Display Mgr is present}
gestaltDisplayMgr??? = 1;
gestaltDisplayMgr??? = 2;
drag (Macintosh Drag and Drop ext [1.0])
gestaltDragMgrAttr *AD05
Returns information about the Drag Manager.
const
gestaltDragMgrAttr = 'drag'; {Drag Manager attributes}
gestaltDragMgrPresent = 0; {Drag Manager is present}
gestaltDragMgrFloatingWind = 1; {*AS09}
gestaltPPCDragLibPresent = 2; {*AS09}
gestaltDragMgr??? = 31; {set with System 7.5}
dsig (PowerTalk ext [1.0?], part of PowerTalk)
gestaltDigitalSignatureVersion
Returns version of the Digital Signature toolbox as BCD.
const
gestaltDigitalSignatureVersion = 'dsig'; {Digitial Signature version}
eajt (Easy Access cp [7.0])
gestaltEasyAccessJTable
Returns the base address of the Easy Access jump-trap table.
const
gestaltEasyAccessJTable = 'eajt'; {Easy Access jump-trap table *M01}
easy (Easy Access cp [6.0.4?])
gestaltEasyAccessAttr
Returns information about the status of Easy Access.
const
gestaltEasyAccessAttr = 'easy'; {Easy Access attributes}
gestaltEasyAccessOff = 0; {Easy Access present but off}
gestaltEasyAccessOn = 1; {Easy Access on}
gestaltEasyAccessSticky = 2; {Easy Access "Sticky"}
gestaltEasyAccessLocked = 3; {Easy Access "Locked"}
NOTE:
The values listed above are not returned with System 7 and later.
Because of a bug different values are returned. This problem is
acknowledged by Apple, but it is unclear when it will be fixed. They
know about it since September 1992... (Rene Ros)
edtn (System [7.0])
(Macintosh Easy Open cp [1.0?])
gestaltEditionMgrAttr
Returns information about the Edition Manager.
const
gestaltEditionMgrAttr = 'edtn'; {Edition Mgr attributes}
gestaltEditionMgrPresent = 0;
gestaltEditionMgrTranslationAware = 1; {*AD03}
evnt (System [7.0]) *AS05
(Apple Event Manager ext [1.0.1], part of AppleScript Setup)
gestaltAppleEventsAttr
Returns information about Apple Events.
const
gestaltAppleEventsAttr = 'evnt'; {Apple events attributes}
gestaltAppleEventsPresent = 0; {True if Apple Events present}
{ *AS05}
gestaltScriptingSupport = 1;
gestaltOSLInSystem = 2; {OSL is in system so don`t use}
{ the one linked}
NOTE:
These declarations in the AEObjects.h file (on ETO 14) should be
ignored:
gestaltObjectSupportLibraryInSystem = 1,
gestaltObjectSupportLibraryPowerPCSupport = 2
flag (Network Extension ext [System 7.0 *AT02])
gestaltFlagshipAttr
Returns information about the Flagship.
const
gestaltFlagshipAttr = 'flag'; {*M01}
gestaltFlagshipPresent = 0; {*M01}
gestaltFlagshipRegistered = 1; {*M01}
fndr (Finder [7.1.1]) *AS04
gestaltFinderAttr
Returns information about the Finder.
const
gestaltFinderAttr = 'fndr';
gestaltFinderDropEvent = 0;
gestaltFinderMagicPlacement = 1;
gestaltFinderCallsAEProcess = 2;
gestaltOSLCompliantFinder = 3; {supports Finder Event Suite}
gestaltFinderSupports4GBVolumes = 4;
gestaltFinderHandlesCFMFailures = 5;
gestaltFinderHasClippings = 6; {*AD12}
fold (System [7.0])
gestaltFindFolderAttr
Returns information about the FindFolder function.
const
gestaltFindFolderAttr = 'fold'; {FindFolder attributes}
gestaltFindFolderPresent = 0; {FindFolder function available}
font (System [7.0])
(TrueType INIT ext for System 6)
gestaltFontMgrAttr
Returns information about the Font Manager.
const
gestaltFontMgrAttr = 'font'; {Font Mgr attributes}
gestaltOutlineFonts = 0;
gestaltFontMgr??? = 1; {set with System 7.1 & 7.5}
gestaltDiskCachedFonts? = 2; {Disk Cached Fonts available?}
NOTE:
Inside the Inline Extension 1.0 with KanjiTalk7, which was compiled
with full subroutine names, there is a subroutine called
'DiskChachedFontsAvailable' in an INIT resource which checks bit 2
of the gestaltFontMgrAttr selector response. (Marco Piovanelli)
fpu (System [6.0.4])
gestaltFPUType
Returns a value that indicates the FPU-type, if any.
const
gestaltFPUType = 'fpu '; {FPU Type}
gestaltNoFPU = 0; {no FPU}
gestalt68881 = 1; {68881 FPU}
gestalt68882 = 2; {68882 FPU}
gestalt68040FPU = 3; {built-in 68040 FPU *S01}
NOTE: See also the 'FPUE' entry with the Third Parties section.
fs (720K Floppy Disk Formatter ext [1.0a3?],
part of the Hardware System Update [2.0])
(Apple Share ext [AS 3.0/SYS 7.0])
(File System Manager ext [1.2])
(System [7.0])
gestaltFSAttr
Returns information about the file system.
const
gestaltFSAttr = 'fs '; {file-system attributes}
gestaltFullExtFSDispatching = 0; {exports HFSDispatch traps}
gestaltHasFSSpecCalls = 1; {supports FSSpec records}
gestaltHasFileSystemManager = 2; {has the File System Manager}
{ *S01}
gestaltFSMDoesDynamicLoad = 3; {FSM supports dynamic loads}
{ *AD12}
gestaltFSSupports4GBVols = 4; {FS supports 4 gigabyte volumes}
{ *AD14}
gestaltFSSupports2TBVols = 5; {FS supports 2 terabyte volumes}
{ *AD14}
gestaltHasExtendedDiskInit = 6; {has extended Disk}
{ Initialization calls *AD12}
NOTES:
See 'Reports' chapter (QuickTime section) for more information.
fxfr (System [7.0])
gestaltFXfrMgrAttr
Returns information about the File Transfer Manager.
const
gestaltFXfrMgrAttr = 'fxfr'; {File Transfer Mgr attributes}
gestaltFXfrMgrPresent = 0; {File Transfer Mgr present}
gestaltFXfrMgrMultiFile = 1; {supports FTSend and FTReceive}
{ *AS02}
gestaltFXfrMgrErrorString = 2; {supports FTGetErrorString}
{ *AS02/S02}
gestaltFXfrMgr??? = 3?; {new, see future technote}
{ set with System 7.5}
Apple System Software (G-L)
---------------------------
gval (GestaltValue glue code)
gestaltValueTable?
Returns a pointer to a table with the selectors and values managed
by the GestaltValue code. (Marco Piovanelli)
const
gestaltValueTable? = 'gval';
WARNING:
Although this information isn't officially confirmed, it is probably
correct.
NOTES:
Although System 7.5 implements the GestaltValue functions it does not
install this selector. Only with system software before 7.5 it is
installed by the glue code. (Rene Ros)
See 'Reports' chapter (GestaltValue section) for more information.
hdwr (System [6.0.4]) INF
gestaltHardwareAttr
Returns information about the hardware configuration of the machine.
const
gestaltHardwareAttr = 'hdwr'; {hardware attributes}
gestaltHasVIA1 = 0; {VIA 1}
gestaltHasVIA2 = 1; {VIA 2}
gestaltHasRBV = 2; {RBV *M01}
gestaltHasASC = 3; {ASC}
gestaltHasSCC = 4; {SCC *M01}
gestaltHasOSS = 5; {OSS *M01}
gestaltHasSCSIDMA = 6; {53C80 SCSI DMA *M01}
gestaltHasSCSI = 7; {SCSI}
gestaltHasSWIMIOP = 8; {SWIM IOP *M01}
gestaltHasSCCIOP = 9; {SCC IOP *M01}
gestaltHasFitch = 10; {Fitch memory Controller *M02}
gestaltHasIWM = 11; {IWM *M01}
gestaltHasPWM = 12; {PWM disk speed buffer *M02}
gestaltHasRAMSndBuff = 13; {RAM-based sound buffer *M02}
gestaltHasVideoDAConv = 14; {Video D/A Converter *M02}
gestaltHasPGC = 15; {PGC (parity control) *M02}
gestaltHasRPU? = 16; {Random Parity Unit}
gestaltHasOMC? = 17; {Orwell Memory Controller}
gestaltHasVISARBV? = 18; {VISA Ram Based Video}
gestaltHasSoftPowerOff = 19; {Software PowerOff (since 7.0?) *S01}
gestaltHasSonic = 20; {Sonic (built-in ethernet) *M01}
gestaltHasSCSI961 = 21; {Int. 53C96 SCSI *AT01}
gestaltHasSCSI962 = 22; {Ext. 53C96 SCSI *AT01}
gestaltHasDAFBVideo = 23; {DAFB Video *M01}
gestaltHasUniversalROM = 24; {Universal ROM *AT04}
gestaltHas??? = 27; {set on PowerMac and C660AV}
gestaltHasDSP? = 30; {set on C660AV, DSP?}
gestaltHasDSP? = ??; {Digital Signal Processor}
gestaltHasEASC? = ??; {Enhanced Apple Sound Chip}
gestaltHasFWSCSI? = ??; {Fast and Wide SCSI}
gestaltHasGraphic? = ??; {Apple Graphics coprocessor}
gestaltHasJaws? = ??; {JMC}
gestaltHasSCSI2? = ??; {SCSI 2}
NOTES:
See for additional information the TN "M.OV.GestaltSysenvirons" (OV 16).
On the Mac IIfx and Quadra 900 the gestaltHasSCC bit always returns 0
because the SCC is isolated by I/O processors. When the Compatibility
Switch control panel is used the bit is set. *AD12
The old IM VI listed this selector as an environmental selector but
IM OS Utilities now lists it as an informational selector.
help (System [7.0])
gestaltHelpMgrAttr
Returns information about the Help Manager.
const
gestaltHelpMgrAttr = 'help'; {Help Mgr attributes}
gestaltHelpMgrPresent = 0; {Help Mgr present}
gestaltHelpMgrExtensions = 1; {Help Mgr extensions installed}
{ *AS03}
gestaltAppleGuideIsDebug = 30; {Apple Guide is debugging version}
{ *AS12}
gestaltAppleGuidePresent = 31; {Apple Guide is available *AS12}
hscd (High Sierra File Access ext [5.0], part of Apple CD-ROM Software and
System 7.5)
(ISO 9660 File Access ext [1.0-4.0], part of Apple CD-ROM Software)
gestaltHighSierraFAVersion? *AT03
Returns High Sierra File Access version in BCD.
const
gestaltHighSierraFAVersion? = 'hscd'; {High Sierra Fileaccess version}
NOTE: The returned version is obtained from 'vers' resource ID# 1.
icmp (QuickTime ext [1.0])
gestaltCompressionMgr
Returns Compression Manager version as Integer.
const
gestaltCompressionMgr = 'icmp'; {determines if Image Compression}
{ manager is available *AS01}
icon (System [7.1.2])
gestaltIconUtilities
Returns information about the Icon Utilities routines.
const
gestaltIconUtilities = 'icon'; {Icon Utils attributes}
gestaltIconUtilitiesPresent = 0;
NOTE:
This selector is supposed to be implemented since System 7.1.2. You
need to determine if the _IconDispatch A-trap ($AB49) is available
instead since the Icon Utilities are actually available since
System 7.0. *AD13/AT01
intd (Powerbook Duo Enabler [1.0])
(System [7.5])
(System Enabler 111 [1.0])
(System Enabler 121 [1.0])
(System Enabler 131 [1.0])
(System Enabler 201 [1.0])
gestaltInternalDiskAttr?
Returns information about the internal harddisk of portable
computers?
const
gestaltInternalDiskAttr? = 'intd'; {PB Internal HD attributes}
gestaltHasInternalDisk? = 0; {TRUE if machine has internal HD}
gestaltDiskSpinning? = 1; {TRUE if internal HD is spon up}
gestalt??? = 24; {unknown, set on PB180, PB210,}
{ PB540}
WARNING:
This information is from a reliable source. However, is it not
officially confirmed by Apple and there are no constants defined.
NOTE:
On a PB Duo 210 (PowerBook Duo Enabler) I haven't seen bit 1 set, even
when the disk is spinning. It is also reported the bit is clear when
the disk is spinning and set when down (seen on PB Duo 230).
(David Lewis, Rene Ros)
iscd (ISO 9660 File Access ext [5.0], part of Apple CD-ROM Software and
System 7.5)
gestaltISO9660FAVersion?
Returns ISO 9660 File Access version in BCD?.
const
gestaltISO9660FAVersion? = 'iscd';
NOTE:
Versions before 5.0 installed the 'hscd' selector.
kbd (System [6.0.4])
gestaltKeyboardType
Returns a value that indicates the type of keyboard on which the last
keystroke was seen.
const
gestaltKeyboardType = 'kbd '; {keyboard type}
gestaltMacKbd = 1; {Macintosh Keyboard}
gestaltMacAndPad = 2; {Macintosh Keyboard with Pad}
gestaltMacPlusKbd = 3; {Macintosh Plus Keyboard}
gestaltExtADBKbd = 4; {Extended ADB Keyboard}
gestaltStdADBKbd = 5; {Standard ADB Keyboard}
gestaltPrtblADBKbd = 6; {Portable ADB Keyboard}
gestaltPrtblISOKbd = 7; {Portable ISO ADB Keyboard}
gestaltStdISOADBKbd = 8; {Standard ISO ADB Keyboard}
gestaltExtISOADBKbd = 9; {Extended ISO ADB Keyboard}
gestaltADBKbdII = 10; {ADB Keyboard II}
gestaltADBISOKbdII = 11; {ISO ADB Keyboard II}
gestaltPwrBookADBKbd = 12; {PowerBook Keyboard *AT01}
gestaltPwrBookISOADBKbd = 13; {PowerBook Keyboard (ISO) *AT01}
gestaltAppleAdjustKeypad = 14; {Apple Adjustable Keypad *AT01}
gestaltAppleAdjustADBKbd = 15; {Apple Adjustable Keyboard}
{ incl. US, ISO and Japanese *AT01}
gestaltUnknownKbd1??? = ??; {new AppleDesign extended kbd.}
gestaltUnknownKbd2??? = 24; {reported to be returned on}
{ PB 5xx other report says these}
{ return 11}
======================================================================
Combinations of System Global KbdType/ADB Mgr devType and
gestaltKeyboardType values *AT01
======================================================================
KbdType gestaltKeyboardType Gestalt Name
(hex.) (decimal)
----------------------------------------------------------------------
$03 1 gestaltMacKbd
$13 2 gestaltMacAndPad
$0B 3 gestaltMacPlusKbd
$02 4 gestaltExtADBKbd
$01 5 gestaltStdADBKbd
$06 6 gestaltPrtblADBKbd
$07 7 gestaltPrtblISOKbd
$04 8 gestaltStdISOADBKbd
$05 9 gestaltExtISOADBKbd
$08 10 gestaltADBKbdII
$09 11 gestaltADBISOKbdII
$0C 12 gestaltPwrBookADBKbd
$0D 13 gestaltPwrBookISOADBKbd
$0E 14 gestaltAppleAdjustKeypad
$10 15 gestaltAppleAdjustADBKbd, US
$11 15 gestaltAppleAdjustADBKbd, ISO
$12 15 gestaltAppleAdjustADBKbd, Japanese
----------------------------------------------------------------------
NOTES:
The Apple Adjustable Keyboard doesn't has its own Gestalt keyboard
type defined with the some versions of System Software (7.1?). It
changes a low memory global but this doesn't change the Gestalt
response. This problem is corrected by the Hardware System Update 2.0
or later.
The PowerMac 7100/66 doesn't install this selector for some reason.
Other Macs with Gestalt version 4 do, so it isn't intentional.
Since this selector returns the type of the keyboard last touched
and because there can be more than one keyboard, MacDTS considers this
selector to be obsolete. You should use GetADBInfo instead and check
the orgADBAddr field for a keyboard (0x02) and the devType field
contains the keyboard device type. It uses the same values as the
KbdType low memory variable, see the table above. *AD07/AT01
kpcd (Apple Photo Access ext [1.0], part of Apple CD-ROM Software) *AT03
gestaltApplePhotoAccessVersion?
Returns Apple Phote Access version in BCD.
const
gestaltApplePhotoAccessVersion? = 'kpcd';
NOTE:
The above is what the documentation says. However it seems to return
always $FFFFFF7 as response.
lram (System [6.0.4])
(RAM Doubler [1.0] by Connectix Corporation)
gestaltLogicalRAMSize
Returns the amount of logical memory available in bytes.
const
gestaltLogicalRAMSize = 'lram'; {logical RAM size}
lmem (System [6.0.4])
gestaltLowMemorySize
Returns the amount of the low-memory area in bytes.
const
gestaltLowMemorySize = 'lmem'; {low-memory area size}
Apple System Software (M-P)
---------------------------
mach (System [6.0.4]) INF
gestaltMachineType
Returns one of the following values, indicating the type of
machine.
RELEASED
const
gestaltMachineType = 'mach'; {machine type}
gestaltClassic = 1; {Macintosh 128K}
gestaltMacXL = 2; {Macintosh XL}
gestaltMac512KE = 3; {Macintosh 512KE}
gestaltMacPlus = 4; {Macintosh Plus}
gestaltMacSE = 5; {Macintosh SE}
gestaltMacII = 6; {Macintosh II}
gestaltMacIIx = 7; {Macintosh IIx}
gestaltMacIIcx = 8; {Macintosh IIcx}
gestaltMacSE030 = 9; {Macintosh SE/30}
gestaltPortable = 10; {Macintosh Portable}
gestaltMacIIci = 11; {Macintosh IIci}
gestaltMacIIfx = 13; {Macintosh IIfx}
gestaltMacClassic = 17; {Macintosh Classic}
gestaltMacIIsi = 18; {Macintosh IIsi}
gestaltMacLC = 19; {Macintosh LC}
gestaltQuadra900 = 20; {Macintosh Quadra 900 *AT01}
gestaltPowerBook170 = 21; {Macintosh PowerBook 170 *AT01}
gestaltQuadra700 = 22; {Macintosh Quadra 700 *AT01}
gestaltClassicII = 23; {Macintosh Classic II *AT01}
gestaltPowerBook100 = 24; {Macintosh PowerBook 100 *AT01}
gestaltPowerBook140 = 25; {Macintosh PowerBook 140 *AT01}
gestaltQuadra950 = 26; {Macintosh Quadra 950 *AT01}
gestaltMacLCIII = 27; {Macintosh LC III}
gestaltPowerBook210 = 29; {Macintosh PowerBook 210}
gestaltMacCentris650 = 30; {Macintosh Centris 650}
gestaltPowerBook230 = 32; {Macintosh PowerBook 230}
gestaltPowerBook180 = 33; {Macintosh PowerBook 180}
gestaltPowerBook160 = 34; {Macintosh PowerBook 160}
gestaltMacQuadra800 = 35; {Macintosh Quadra 800}
gestaltMacQuadra650 = 36; {Macintosh Quadra 650 *AT01}
gestaltMacLCII = 37; {Macintosh LC II}
gestaltPowerBookDuo250 = 38; {Macintosh PowerBook Duo 250 *AT01}
gestaltPowerMac9150 = 39; {Power Macintosh 9150 *AT01}
gestaltPowerMac8100_110? = 40; {Power Macintosh 8100/110}
gestaltMacIIvi = 44; {Macintosh IIvi}
gestaltPerforma600 = 45; {Macintosh Performa 600}
gestaltMacIIvx = 48; {Macintosh IIvx}
gestaltMacColorClassic = 49; {Macintosh Color Classic}
gestaltPowerBook165c = 50; {Macintosh PowerBook 165c}
gestaltMacCentris610 = 52; {Macintosh Centris 610}
gestaltMacQuadra610 = 53; {Macintosh Quadra 610 *AT01}
gestaltPowerBook145 = 54; {Macintosh PowerBook 145 & 145b}
{ *AT01}
gestaltMacLC520 = 56; {Macintosh LC 520 *AT01}
gestaltMacCentris660AV = 60; {Macintosh Centris 660AV *AT01}
gestaltPerforma460 = 62; {Macintosh Performa 460}
gestaltPowerMac8100_80 = 65; {Power Macintosh 8100/80}
gestaltPowerBook180c = 71; {Macintosh PowerBook 180c *AT01}
gestaltPowerBook520_540 = 72; {Macintosh PowerBook 520, 520c,}
{ 540 & 540c}
{ use MaximumProcessorSpeed from}
{ Power Mgr. 25 and 33 resp. *AT01}
gestaltPowerMac6100_60 = 75; {Power Macintosh 6100/60}
gestaltPowerBookDuo270c = 77; {Macintosh PowerBook Duo 270c}
{ *AT01}
gestaltMacQuadra840AV = 78; {Macintosh Quadra 840AV *AT01}
gestaltMacLC550 = 80; {Macintosh LC 550 *AT01}
gestaltPowerBook165 = 84; {Macintosh PowerBook 165 *AT01}
gestaltMacTV = 88; {Macintosh TV}
gestaltMacLC475 = 89; {Macintosh LC 475 *AT01}
gestaltMacLC575 = 92; {Macintosh LC 575 *AT01}
gestaltMacQuadra605 = 94; {Macintosh Quadra 605 *AT01}
gestaltMacLC630 = 98; {Macintosh LC 630, see below *AT01}
gestaltMacQuadra630 = 98; {Macintosh Quadra 630 *AT01}
{ Q630 has MC68040, LC 630 has}
{ MC68LC040 but can upgrade}
gestaltPowerBookDuo280 = 102; {Macintosh PowerBook Duo 280}
gestaltPowerBookDuo280c = 103; {Macintosh PowerBook Duo 280c}
gestaltPowerMac7100_66 = 112; {Power Macintosh 7100/66}
gestaltPowerBook150 = 115; {Macintosh PowerBook 150}
gestaltPowerMacQ700? = 116; {Quadra 700 upgrade card?}
gestaltPowerMacQ900? = 117; {Quadra 900 upgrade card?}
gestaltPowerMacQ950? = 118; {Quadra 950 upgrade card?}
gestaltPowerMacC610? = 119; {Centris 610 upgrade card?}
gestaltPowerMacC650? = 120; {Centris 650 upgrade card?}
gestaltPowerMacQ610? = 121; {Quadra 610 upgrade card?}
gestaltPowerMacQ650? = 122; {Quadra 650 upgrade card?}
gestaltPowerMacQ800? = 123; {Quadra 800 upgrade card?}
Exceptions with systems prior to System 7.1:
const
gestaltMacLCII = 19; {Macintosh LC & LC II}
{ LC has MC68020,LC II has MC68030}
gestaltPowerBook145 = 25; {Macintosh PowerBook 140 & 145}
{ use GetCPUSpeed from}
{ Power Mgr? 16 and 25 resp.}
Released unknown
At the moment there are no released Macintosh models of which the
machine ID is unknown.
Relabeled
Performa 200 = gestaltClassicII
Performa 250 = gestaltMacColorClassic
(sold in Australia & Britain)
Performa 400 = gestaltMacLCII
Performa 405 = gestaltMacLCII
Performa 410 = gestaltMacLCII
Performa 430 = gestaltMacLCII
Performa 450 = gestaltMacLCIII
Performa 466 = gestaltMacLCIII
Performa 467 = gestaltMacLCIII
Performa 475 = gestaltMacLC475
Performa 476 = gestaltMacLC475
Performa 550 = gestaltMacLC550
Performa 560MM = gestaltMacLC550
Performa 575 = gestaltMacLC575
Performa 577 = gestaltMacLC575
Performa 578 = gestaltMacLC575
Performa 600 = gestaltMacIIvx
Performa 630 = gestaltMac630?
Performa 635 = gestaltMac630?
Performa 636 = gestaltMac630?
Performa 638CDV = gestaltMac630?
Performa 6110CD = gestaltPowerMac6100_60
Performa 6112CD = gestaltPowerMac6100_60
Performa 6115CD = gestaltPowerMac6100_60
Performa 6117CD = gestaltPowerMac6100_60
Performa 6118CD = gestaltPowerMac6100_60
PowerMac 6100/60AV = gestaltPowerMac6100_60
PowerMac 7100/66AV = gestaltPowerMac7100_66
PowerMac 8100/80AV = gestaltPowerMac8100_80
PowerMac WGS 6150 = gestaltPowerMac6100_60 ?
PowerMac WGS 8150 = gestaltPowerMac8100_80 ?
PowerMac WGS 9150 = gestaltPowerMac9150
Quadra 660AV = gestaltMacCentris660AV
Workgroup Server 60 = gestaltMacCentris610
Workgroup Server 80 = gestaltMacQuadra800
Workgroup Server 95 = gestaltQuadra950
Workgroup Server 95+ = gestaltQuadra950
UNRELEASED (RUMOURED / PRERELEASES)
const
gestaltPaulaMac? = 31; {"Paula's Desk Macintosh" in}
{ PowerPC Enabler 1.1}
gestaltUnknownLC475? = 90; {Q605 as a LC475 at 33 Mhz instead}
{ of 25 Mhz}
gestaltQ605_20? = 93; {Q605 at 20 Mhz instead of 25 Mhz}
gestaltQ605_33? = 95; {Q605 at 33 Mhz instead of 25 Mhz}
gestaltTellShow = 98; {codename for LC630? *AD16}
gestaltUnknownMac? = 99; {???, 'Macintosh' in Enabler 405}
gestaltTellXfmr = 99; {codename LC630 successor? *AD16}
gestaltPowerMac6100_66? = 46; {Power Macintosh 6100/66?}
gestaltPowerMac6100_66? = 100; {Power Macintosh 6100/66?}
gestaltPowerMac6100_80? = 101; {Power Macintosh 6100/80}
gestaltPowerMac7100_60? = 111; {Power Macintosh 7100/60}
gestaltPowerMac7100_80? = 47; {Power Macintosh 7100/80?}
gestaltPowerMac7100_80? = 113; {Power Macintosh 7100/80?}
gestaltPowerMac8100_60? = 61; {Power Macintosh 8100/80 when}
{ actually running at 60 MHz}
{ (value found experimentally)}
gestaltPowerMac8100_60? = 64; {Power Macintosh 8100/60 but also}
{ Power Macintosh 8100/80 when}
{ actually running at 66.6 MHz}
{ (value from PowerPC Enabler)}
gestaltPowerMac8100_100? = 55; {Power Macintosh 8100/100?}
gestaltPowerMac8100_100? = 66; {Power Macintosh 8100/100?}
gestaltPowerMac8100_120 = 12; {Power Macintosh 8100/120}
Unreleased unknown
const
gestaltPomona??? = ???; {unknown, codename Pomona?}
Pomona is probably the codename of a new line of home and business
machines scheduled for early 1995, with three models:
gestalt??? = ???
gestalt??? = ???
gestalt??? = ???
gestalt??? = 43; {unknown, pre-rel. Tempest/Cyclone}
gestaltAlchemy? = ???; {unknown, codename Alchemy}
gestaltCatalyst? = ???; {unknown, codename Catalyst}
gestaltNitro? = ???; {unknown, codename Nitro}
gestaltPowerBookDuo2300? = ???; {PowerBook Duo 2300 (or AJ?) with}
{PPC 603? (May 95)}
gestaltPowerBookDuo2300c?= ???; {PowerBook Duo color (or AJc?) with
{ PPC 603? (May 95)}
gestaltPowerBook603? = ???; {Macintosh PowerBook with PPC 603?}
{ June 95}
gestaltTNTPowerMacsHP? = ???; {TNT PowerMac, High Perf.?}
gestaltTNTPowerMacsGW? = ???; {TNT PowerMac, Graphics Workstation?}
gestaltTsunami? = ???; {unknown, codename Tsunami}
Relabeled
-
NOTES:
The Power Macintosh computers also set the three low bits of a 32-bit
register at address $5FFF FFFC to a machine identification code.
======================================================================
Power Macintosh register identification codes
======================================================================
Machine Register bits
----------------------------------------------------------------------
Power Macintosh 6100 000
Power Macintosh 7100 010
Power Macintosh 8100 011
----------------------------------------------------------------------
An upgraded Centris 610 doesn't return 119 (Centris 610 upgrade card?)
but 75 (PowerMac 6100). (Carl R. Osterwald)
With an upgraded Quadra 700 the upgrade card value is returned. The
values for the upgrade cards came from the kMachineNameStrID resource
from the Power Mac Upgrade Card enabler distributed with System
Update 3.0 on disk 2. The Power Macintosh Card 1.0 control panel
checks both the Quadra/Centris machine IDs and the ones for the
upgrade cards to determine if it can run. (Rene Ros)
When a PowerMac is clock-chipped it changes the machine type ID it
returns. This has been observed with a PM 6100/60 which was chipped to
80 MHz and higher, it returned 101 which belongs to a PM 6100/80
(Mike Cohen). Even funnier is a 8100AV (standard at 80 MHz) which
returns 64 ("8100/60") with a clockspeed of 66.6 MHz, but 61 (???)
and no name in the 'About this Macintosh' window at 60 MHz.
- Centris 650 can be changed into a Quadra 650 by a resistor swap.
- remove jumper J118 of Q605 and it becomes a LC475.
- LC III/P450 returns value for P460 when chipped to 33 MHz.
For more info on clock-chipping Macs:
http://bambam.cchem.berkeley.edu/~schrier/mhz.html
(Marc Schrier, the 'clock-chipping' guy who was experimenting a bit
but most of the time he is speeding them up...).
The Machine Name STR# resource in the PowerPC Enabler 1.1 contains
this:
items 1-66 contain the item number itself except:
12 Power Macintosh 8100/120
31 Paula's Desk Macintosh
39 Workgroup Server 9150
40 Power Macintosh 8100/110
46 Power Macintosh 6100/66
47 Power Macintosh 7100/80
55 Power Macintosh 8100/100
64 Power Macintosh 8100/60
65 Power Macintosh 8100/80
66 Power Macintosh 8100/100
items 67-115 are empty except:
75 Power Macintosh 6100/60
100 Power Macintosh 6100/66
101 Power Macintosh 6100/80
111 Power Macintosh 7100/60
112 Power Macintosh 7100/66
113 Power Macintosh 7100/80
items 116-123 contain the text " Power Macintosh"
"Paula's Desk Macintosh" disappeared again with version 1.1.1 of the
PowerPC enabler! :-)
The Performa 600 was originally planned to ship as Macintosh IIvm
but the name was changed because users thought 'vm' meant 'Virtual
Memory'. MOST system enablers (i.e. 001, 040, 065 & 201) still
contain this original name.
The Developer Notes (available from APDA, on ftp.apple.com and on the
Developer CD-ROM Series) about some PowerBook models (100/140/170)
provide incorrect information regarding the machine type returned by
the Gestalt Manager.
With the Universal Interfaces 2.0a1 a number of symbolic names for the
types are added, but their correctness is unknown. These are:
const
gestaltPerforma450 = 27;
gestaltAWS9150_80 = 39;
gestaltMacIIvm = 45;
gestaltPerforma250 = 49;
gestaltPerforma46x = 62;
gestaltPerforma550 = 80;
gestaltPerforma47x = 89;
You can use the returned value as an index with GetIndString
to get the machine's name. The STR# resource ID is:
kMachineNameStrID = -16395;
On Macintosh Performas, the Machine Name STR# resource will always
return the string "Macintosh" (not "Macintosh Performa 450" or
"Performa 450"). On all other Macintoshes, the string will return
the correct name. (Mark Dawson)
[But] if you do a dirty install [of System 7.5 or later] (right on top
of an existing, pre-7.5 System), your machine type and icon will be
preserved. If you do a clean install, you'll get the generic name/icon
in the Finder's "About This Macintosh..." dialog. (Tim Swihart)
This can be fixed by using the freeware Mac Identifier extension from
Flux Software, written by Maurice Volaski. See the 'Related Software'
section of the 'General Info' chapter for availability. (Rene Ros)
In the future ID's will be reused and the kMachineNameStrID will
contain only the text ' Macintosh' (two spaces first) *AT01
Why, oh why? (Rene Ros)
All system enablers have a STR# resource -16395 (kMachineNameStrID)
included to replace the one in the System file. In most cases this
resource lists the same Macintosh names as the original one in
System 7.1 and adds the names of the machines the enabler is intended
for. But some only list the machines the enabler is used with.
Therefore, if you want to display the name of a machine which isn't
of the current machine type you can't rely on this resource anymore.
Using the archive mail server you can obtain a ResEdit file with the
complete machine name string resource. The command to use is
archive get src/machname-str.sit.hqx
I will keep it up-to-date along with the changes in this 'mach' entry.
(Rene Ros)
IM More Macintosh Toolbox (p. 1-127) lists this selector as
'gestaltMachineModel'.
(Sources of relabled and unreleased machines:
MacFacts Two by J.D.S. Babcock <jdsb@ee.duke.edu>;
Duo FAQ by Nicholas C. De Mello <nick@pitt.edu>;
MacWEEK magazine;
TidBits magazine by Adam Engst & Co.)
malr (PowerTalk ext [1.0?], part of PowerTalk)
gestaltSMPMailerVersion
Returns the SMP Mailer version as INTEGER.
const
gestaltSMPMailerVersion = 'malr'; {SMP Mailer version}
micn (System [6.0.4]) INF
gestaltMachineIcon
Returns an icon family resource ID for the current type of
Macintosh.
const
gestaltMachineIcon = 'micn'; {machine ICON/cicn res ID}
NOTE:
The icon resource ID returned is based on the gestaltMachineType
response which is used as index into a table. This table of
resource IDs differs for most System Software versions (and
enablers). If you really want to know the icon resource ID of a
machine which is not the current machine you have the following
options:
- Write a GDEF to replace the 'mach' selector, let this GDEF return
the original gestaltMachineType unless a certain selector exists.
Create this selector with the GestaltValue code and make it loop
from 1 to the number of items in the STR# kMachineNameStrID
resource, let the custom GDEF return this as the machine type so
the gestaltMachineIcon selector will use this to look up the icon
resource ID. Then remove the GestaltValue selector and restore the
original gestaltMachineType selector.
- Get the entrypoint of the gestaltMachineIcon GDEF, jump into the
GDEF a few bytes further (and thus skipping the gestalt call using
the gestaltMachineType selector), emulate a genuine call to Gestalt
by setting the A0 (response, the machineType you want) and
D0 (result) registers correct.
- Determine the start of the table, which is located in memory before
the entrypoint of the gestaltMachineIcon GDEF code, and calculate
the offset to the icon resource ID you need. If you want code which
does this, you can contact me (Rene Ros) an I will sent you some
Pascal source code.
(David Greenspon, Michael Hecht and Rene Ros)
It appears as if this selector returns always the ID of the general
Macintosh icon (like in the Welcome screen), starting with System 7.5.
(Rene Ros)
misc (System [6.0.5])
gestaltMiscAttr
Returns information about miscellaneous pieces of software or
hardware.
const
gestaltMiscAttr = 'misc'; {miscellaneous attributes}
gestaltScrollingThrottle = 0;
gestaltBootGlobals = 1; {Boot Globals *M02}
gestaltSquareMenuBar = 2;
mixd (System? [7.1.2?])
gestaltMixedModeAttr
Returns information about the Mixed Mode Manager.
const
gestaltMixedModeAttr = 'mixd'; {Mixed Mode Mgr attributes}
gestaltPowerPCAware = 0; {True if MMMgr Supports PowerPC}
NOTE:
IM OS Utilities lists the 'mixd' selector as 'gestaltMixedModeVersion'
but I don't believe that... (Rene Ros)
mmu (System [6.0.4])
gestaltMMUType
Returns a value that indicates the type of MMU currently installed,
if any.
const
gestaltMMUType = 'mmu '; {MMU Type}
gestaltNoMMU = 0; {no MMU}
gestaltAMU = 1; {AMU}
gestalt68851 = 2; {68851 MMU}
gestalt68030MMU = 3; {built-in 68030 MMU}
gestalt68040MMU = 4; {built-in 68040/68LC040 *S01}
gestaltEMMU1 = 5; {Emulated MMU type 1, PowerPC MMU *AS05}
mtcp (MacTCP cp [1.1])
gestaltMacTCPAttr? *AD01
Returns the version of MacTCP, if opened, as index-value.
====================
MacTCP responses
====================
Version Response
--------------------
1.1 1
1.1.1 2
2.0.x 3
--------------------
If MacTCP is not opened a value of 0 is returned.
No constants are defined with the documentation.
nlup (System [7.0])
gestaltStdNBPAttr
Returns information about the call StandardNBP.
gestaltStdNBPAttr = 'nlup'; {Standard NBP attributes}
gestaltStdNBPPresent = 0;
gestaltStdNBPSupportsAutoPosition = 1; {StandardNBP takes (-1,-1)}
{ for auto-positioning}
nmgr (System [6.0.5])
gestaltNotificationMgrAttr
Returns information about the Notification Manager.
const
gestaltNotificationMgrAttr = 'nmgr'; {Notification Mgr attributes}
gestaltNotificationPresent = 0;
nubs (System [6.0.4, 6.0.5, 6.0.7, discontinued])
gestaltNuBusSlotCount
Returns count of NuBus slots.
const
gestaltNuBusSlotCount = 'nubs'; {NuBus slot count}
ocet (PowerTalk Manager ext [1.0?], part of PowerTalk)
gestaltOCEToolboxVersion
Returns the versions of the S&F Server and the OCE Toolbox as BCD.
const
gestaltOCEToolboxVersion = 'ocet'; {OCE Toolbox version}
gestaltOCETB = $0102; {current OCE Toolbox version 1.0.2}
gestaltSFServer = $0100; {current S&F Server version 1.0}
NOTE:
The high order word will represent the S&F Server version number, and
the low order the OCE Toolbox version number both as BCD.
These will be zero until the component is up and running.
oceu (PowerTalk Manager ext [1.0?], part of PowerTalk)
gestaltOCEToolboxAttr
Returns information about the Open Colloboration Environment Toolbox.
const
gestaltOCEToolboxAttr = 'oceu'; {OCE Toolbox attributes}
gestaltOCETBPresent = $1; {OCE toolbox is present,}
{ not running}
gestaltOCETBAvailable = $2; {OCE toolbox is running and}
{ available}
gestaltOCESFServerAvailable = $4; {S&F Server is running and}
{ available}
gestaltOCTBNativeGlueAvailable = $10; {PowerPC glue available}
{ *AS13}
NOTE:
Any (future) remaining OCE attributes may not be established
correctly until the attribute gestaltOCETBAvailable is set.
os (System [6.0.4, 7.0 and later])
(Process Manager INIT ext [???], part of ???)
gestaltOSAttr
Returns general information about the Operating System.
const
gestaltOSAttr = 'os '; {O/S attributes}
gestaltSysZoneGrowable = 0;
gestaltLaunchCanReturn = 1;
gestaltLaunchFullFileSpec = 2;
gestaltLaunchControl = 3;
gestaltTempMemSupport = 4;
gestaltRealTempMemory = 5;
gestaltTempMemTracked = 6;
gestaltIPCSupport = 7;
gestaltSysDebuggerSupport = 8;
gestaltSkiaGlobalsSwitched = 9; {*AS05}
gestaltBgndMouseDownSupport = 10; {unnamed Process Mgr routine}
{ available to indicate if a}
{ layer switch is wanted by the}
{ application when one of its}
{ windows is clicked while in}
{ the background. *AS04}
gestaltModernMemMgr? = 11; {on PowerPC, Modern Mem. Mgr?}
gestalt??? = 13; {unknown, System 7.5}
gestalt??? = 14; {unknown, System 7.5}
NOTES:
See the Process Manager chapter in IM Processes for more information
about the launch control features. And the Memory Manager chapter in
IM Memory about the memory features.
More information on the unnamed routine which presence is indicated
by the gestaltBgndMouseDownSupport bit can be found in the orginal
email from Marco Piovanelli to the editor of the GSL. You can get a
copy by emailing this command to the mail archive server:
archive get src/bgndmouse.txt
The header file which lists the gestaltSkiaGlobalsSwitched bit says
this:
/*gestaltSkiaGlobalsSwitched is #9. I don't know why it is not here*/
"Skia" is the code name for QuickDraw GX (MacsBug uses it for trap
$A832, which is the main QuickDraw GX trap).
(Lawrence D'Oliveiro, Anonymous)
ostt (System [6.0.8?])
gestaltOSTable
Returns the base address of the Operating System trap table.
const
gestaltOSTable = 'ostt'; {O/S trap table base}
osyv (sysvINIT ext [???] by T. Tanaka, Apple Computer Japan Inc.) INF
gestaltOldSystemVersion?
Returns the version of the system file as BCD which was returned
before sysvINIT replaced the gestalt definition with a corrected one.
const
gestaltOldSystemVersion? = 'osyv';
NOTE:
Because of a bug with KanjiTalk 6.0.7 this extension (snippet code,
available on Developer CD-ROM Series) replaces the standard 'sysv'
Gestalt Definition (GDEF) with a corrected one to return $0x0607 and
installs the 'osyv' selector which uses the replaced gestalt
definition. *M03
pcxg (System? [???]) *AS04/AS05
gestaltPCXAttr
Returns information about PC Exchange.
const
gestaltPCXAttr = 'pcxg'; {PC Exchange attributes}
gestaltPCXHas8and16BitFAT = 0; {PC Exchange supports both 8 and}
{ 16 bit FATs}
gestaltPCXHasProDOS = 1; {PC Exchange supports ProDOS}
pgsz (System [6.0.4])
(RAM Doubler [1.0] by Connectix Corporation)
gestaltLogicalPageSize
Returns the logical page size in bytes.
const
gestaltLogicalPageSize = 'pgsz'; {logical page size}
NOTE:
The value is unknown on 68000 machines, Gestalt will return an error.
pop! (System [7.0])
gestaltPopupAttr
Returns information about the pop-up control definition.
const
gestaltPopupAttr = 'pop!'; {pop-up CDEF attributes}
gestaltPopupPresent = 0; {pop-up CDEF available}
powr (System [6.0.4])
gestaltPowerMgrAttr
Returns information about the Power Manager, if present.
const
gestaltPowerMgrAttr = 'powr'; {Power Mgr attributes}
gestaltPMgrExists = 0; {Power Mgr is present}
gestaltPMgrCPUIdle = 1; {CPU can idle}
gestaltPMgrSCC = 2; {can stop SCC clock}
gestaltPMgrSound = 3; {can shut off sound circuits}
gestaltPMgrDispatchExists = 4; {dispatch routines are present}
ppc (System [7.0])
gestaltPPCToolboxAttr
Returns information about the capabilities of the PPC Toolbox.
const
gestaltPPCToolboxAttr = 'ppc '; {PPC Toolbox attributes}
gestaltPPCToolboxPresent = $0x0000; {Requires PPCInit to be}
{ called}
gestaltPPCSupportsIncoming = $0x0001; {Deny incoming net}
{ requests}
gestaltPPCSupportsOutGoing = $0x0002; {Deny outgoing net}
{ requests}
gestaltPPCSupportsRealTime = $0x1000; {Supports real-time}
{ delivery}
gestaltPPCSupportsStoreAndForward = $0x2000; {Supports store and}
{ forward delivery}
gestaltPPCSupportsDontCare = $0x4000; {Supports specification}
{ of Don't care}
NOTE:
The first thing that is confusing is that, unlike other selectors
returning attributes, the responses are not bit values, but bit masks.
This means you simply AND the value with the response to test the bit.
The second thing that is confusing is how to interpret
gestaltPPCToolboxPresent = $0x0000.
What this means is that if the PPC toolbox is present, but has not
been initialised (by calling PPCInit), then gestaltPPCToolboxAttr
returns $0x0000. In reality, PPCInit gets called by the Process
Manager before any applications get launched, so no applications will
actually see this response. (Dave Radcliffe)
proc (System [6.0.4])
gestaltProcessorType
Returns a value that indicates the type of processor that is
currently running (or emulated on Power Macs or with MAE).
const
gestaltProcessorType = 'proc'; {processor type}
gestalt68000 = 1; {MC68000}
gestalt68010 = 2; {MC68010}
gestalt68020 = 3; {MC68020}
gestalt68030 = 4; {MC68030}
gestalt68040 = 5; {MC68040 *S01}
NOTES:
The 68LC040 responds as type gestalt68040 but doesn't has an FPU. The
user can swap out the 68LC040 and put in a real 68040 with FPU, so
just checking the machineType or the processorType isn't enough.
(Dave Radcliffe)
Has there been a 68EC030 processor??? I assume it returns
gestalt68030 but doesn't has a MMU. (Rene Ros)
On a Power Macintosh the Gestalt function returns, although a 68LC040
is emulated, the value gestalt68020. This return value is intended to
highlight the two ways in which the 68LC040 Emulator more closely
resembles a 68020 processor than a 68040 processor. *AD11
prpv (PowerTalk ext [1.0?], part of PowerTalk)
gestaltSDPPromptVersion
Returns the SDP Prompt version as INTEGER.
const
gestaltSDPPromptVersion = 'prpv'; {SDP Prompt version}
prty (System [6.0.4])
gestaltParityAttr
Returns information about the parity-checking abilities of the
machine.
const
gestaltParityAttr = 'prty'; {parity attributes}
gestaltHasParityCapability = 0;
gestaltParityEnabled = 1;
Apple System Software (Q-Z)
---------------------------
qd (System [6.0.4])
gestaltQuickDrawVersion
Returns the version of QuickDraw currently present as 2-byte value.
const
gestaltQuickDrawVersion = 'qd '; {QuickDraw version}
gestaltOriginalQD = $000; {obsolete?}
gestaltOriginalQD1 = $001; {obsolete?}
gestalt8BitQD = $100;
gestalt32BitQD = $200;
gestalt32BitQD11 = $210;
gestalt32BitQD12 = $220;
gestalt32BitQD13 = $230;
gestalt32BitQD135? = $235; {with System 7.1.2, ROM = 3072K?}
======================================================================
Possible Combinations of ROM Versions and System Software Versions
======================================================================
ROM Class System Version Gestalt Value
----------------------------------------------------------------------
Black-and-white class < 7.0 gestaltOriginalQD
(ROM < 256K) >= 7.0 gestaltOriginalQD and
gestaltSystemVersion >= $0700
Color QD class < 7.0, no INITs gestalt8BitQD
(ROM = 256K) 6.0.3/6.0.4 and gestalt32BitQD
32-Bit QD INIT 1.0
6.0.5-6.0.8 and gestalt32BitQD12
32-Bit QD INIT 1.2
>= 7.0 gestalt32BitQD13
ci class 6.0.4 gestalt32BitQD + 1
(256K < ROM >= 3072K) 6.0.5-6.0.8 gestalt32BitQD12
>= 7.0 gestalt32BitQD13
PPC class? 7.1.2? gestalt32BitQD135?
(ROM = 3072K)
----------------------------------------------------------------------
(Original source: Develop 14, June 1993, p. 56)
NOTE:
gestalt32BitQD11 is never returned and gestalt32BitQD + 1 means
$0x0201 as response value and doesn't has a defined constant.
Another QuickDraw version is System 7 with a black-and-white class
machine.
qdrw (System [7.0])
gestaltQuickDrawFeaturesAttr
Returns information about QuickDraw.
const
gestaltQuickDrawFeaturesAttr = 'qdrw'; {QuickDraw attributes} *S01
gestaltHasColor = 0; {*S01}
gestaltHasDeepGWorlds = 1; {*S01}
gestaltHasDirectPixMaps = 2; {*S01}
gestaltHasGrayishTextOr = 3; {*S01}
gestaltSupportsMirroring = 4; {*AD12}
NOTES:
There is a bug in the 'qdrw' selector that causes it to report that
Color QuickDraw is always present, even on machines that don't support
it. Apple has acknowledged this bug on AppleLink. (Chris Wysocki)
Use SysEnvirons instead or test for the QD version ('qd ') being
8-bit QD or later.
IM OS Utilities lists this selector as 'gestaltQuickDrawFeatures'.
qtim (QuickTime ext [1.0])
gestaltQuickTime
Returns QuickTime version as NumVersion.
const
gestaltQuickTime = 'qtim'; {Movie Toolbox Availability}
NOTES:
The returned version is obtained from 'vers' resource ID# 1.
IM OS Utilities and the Universal Interfaces 2.0a1 list this selector
as 'gestaltQuickTimeVersion'.
See 'Reports' chapter (QuickTime section) for more information.
qtrs (QuickTime PowerPlug ext [1.0?])
gestaltQuickTimeFeatures *AS06
const
gestaltQuickTimeFeatures = 'qtrs'; {QT Features attributes}
gestaltPPCQuickTimeLibPresent = 0, {PowerPC QT glue library is}
{ present}
NOTE:
The gestaltPPCQuickTimeLibPresent bit indicates that the native
QuickTime interface library is available and can be called by native
PowerPC applications. (Dave Radcliffe)
ram (System [6.0.4])
(RAM Doubler [1.0] by Connectix Corporation)
gestaltPhysicalRAMSize
Returns the number of bytes of the physical RAM currently installed.
const
gestaltPhysicalRAMSize = 'ram '; {physical RAM}
rbv (System [6.0.4, discontinued?]) *AS04
gestaltRBVAddr
Returns the address of the RBV?
const
gestaltRBVAddr = 'rbv '; {RBV address}
reno (Apple Guide ext [1.2?], part of System 7.5)
???
Indicates presence "of the Reno system extension." (Reno is the
mechanism behind Apple Guide for managing the help data-bases?)
rom (System [6.0.4]) INF
gestaltROMSize
Returns the size of the installed ROM in bytes.
const
gestaltROMSize = 'rom '; {ROM size}
romv (System [6.0.4]) INF
gestaltROMVersion
Returns the version number of the installed ROM.
const
gestaltROMVersion = romv'; {ROM version}
rsrc (System [should work since 7.0?])
gestaltResourceMgrAttr
Returns information about the Resource Manager.
const
gestaltResourceMgrAttr = 'rsrc'; {Resource Mgr attributes}
gestaltPartialRsrcs = 0;
gestalt??? = 1; {unknown, set with System 7.5}
NOTE:
Under System 7, bit 0 that tells if you have partial resource support
doesn't work right. The selector is undefined under System 7.0 and
7.0.1 even though the partial resource calls are available. This has
been acknowledged by Apple.
(Michael Hecht, Quinn)
rtmr (System? [7.1.1?])
gestaltRealtimeMgrAttr
Returns information about the Realtime Manager.
const
gestaltRealtimeMgrAttr = 'rtmr'; {Realtime Mgr attributes}
gestaltRealtimeMgrPresent = 0; {Realtime Mgr is present}
NOTE:
If the RealTime Mgr is present this means the ARTA routines are
available to determine if and how many DSPs are installed.
(Zalman Stern)
sccr (System [6.0.4, discontinued]) *AS04
gestaltSCCReadAddr
Returns the address of SCC read ports.
const
gestaltSCCReadAddr = 'sccr'; {SCC read ports address}
sccw (System [6.0.4, discontinued]) *AS04
gestaltSCCWriteAddr
Returns the address of SCC write ports.
const
gestaltSCCWriteAddr = 'sccw'; {SCC write ports address}
scr# (System [6.0.4])
gestaltScriptCount
Returns the number of script systems currently active.
const
gestaltScriptCount = 'scr#'; {number of active scripts}
scra (Macintosh Easy Open cp [1.0]) *AD03
gestaltScrapMgrAttr
Returns information about the Scrap Manager.
const
gestaltScrapMgrAttr = 'scra'; {Scrap Mgr attributes}
gestaltScrapMgrTranslationAware = 0;
gestaltTranslationMgrHintOrder = 1; {*AS04}
scri (System [6.0.4])
gestaltScriptMgrVersion
Returns the version number of the Script Manager as BCD.
const
gestaltScriptMgrVersion = 'scri'; {Script Mgr version}
======================================================================
Version numbers for the Script Manager
======================================================================
System Version Script Mgr Script Mgr Version
(older ROMs)+ (newer ROMs) format
----------------------------------------------------------------------
6.0.3 and earlier <= $20F N.A. binary
6.0.4 Roman $211 $215 "
6.0.4 non-Roman $212 $216 "
6.0.5 $213 $217 (=2.23) "
6.0.7 $230 $231 BCD
J-6.0.7.1 $230 $231 "
6.0.8 $230 $231 "
6.1 non-Roman $240 $241 "
7.0 $700 $700 "
7.0.1 Roman $701 $701 "
7.0.1 non-Roman $701 $701 "
7.1 $710 $710 "
7.5 $720 $720 "
+ Plus,SE,II,IIx,IIcx,SE/30,Classic
----------------------------------------------------------------------
(Original source: Inside Macintosh Text, p. 6-9)
scsi (System [7.1.2?])
(SCSI Manager ext [4.3])
gestaltSCSI *AT07
Returns information about the SCSI Manager.
const
gestaltSCSI = 'scsi'; {SCSI Manager attributes}
gestaltAsyncSCSI = 0; {Supports asynchronous SCSI}
gestaltAsyncSCSIINROM = 1; {Async SCSI is in ROM}
{ (available for booting)}
gestaltSCSISlotBoot = 2; {ROM supports Slot-style PRAM for}
{ SCSI boots}
sdev (Control Strip cp [1.0], part of PowerBook Utilities)
gestaltControlStripAttr
Returns information about the Control Strip software.
const
gestaltControlStripAttr = 'sdev';
gestaltControlStripExists = 0; {TRUE = control strip is}
{ installed}
gestaltControlStripVersionFixed = 1; {version of Control Strip}
{ installs 'csvr' selector}
{ instead of 'sdvr' *AS11}
NOTES:
Control Strip displays a row with icons and popup menus to quickly
change settings on portable macs, i.e. AppleTalk and the sound volume.
A file 'IsControlStrip.c' included with the Apple Guide Authoring Kit
defines this selector as:
#define gestaltStatusBarAttr 'sdev'
#define gestaltStatusBarExists 0
(Rene Ros)
sdvr (PowerTalk ext [1.0?], part of PowerTalk)
gestaltSDPStandardDirectoryVersion
Returns the SDP Standard Directory version as INTEGER.
const
gestaltSDPStandardDirectoryVersion = 'sdvr'; {SDP Standard Directory}
{version}
WARNING:
The same selector code is used by the Control Strip 1.0 control panel.
See the gestaltControlStripVersion ('csvr') selector entry above.
ser (System [6.0.8?])
gestaltSerialAttr
Returns information about the serial hardware of the machine.
const
gestaltSerialAttr = 'ser '; {serial hardware attributes}
gestaltGPIaToDCDa = 0;
gestaltGPIaToRTxCa = 1;
gestaltGPIaToDCDb = 2;
slot (System [6.0.4, 6.0.5, discontinued])
gestaltSlotAttr
Returns information about the Slot Manager.
const
gestaltSlotAttr = 'slot'; {Slot Mgr attributes}
gestaltSlotMgrExists = 0;
gestaltNuBusPresent = 1;
gestaltSESlotPresent = 2;
gestaltSE30SlotPresent = 3;
gestaltPortableSlotPresent = 4;
slt1 (System [6.0.4, 6.0.5, discontinued])
gestaltFirstSlotNumber
Returns first slot number.
const
gestaltFirstSlotNumber = 'slt1'; {First Slot number}
sltc (System [6.0.8?])
gestaltNuBusConnectors
Returns information about the NuBus slot connector locations. The
value returned is a bitmap. If bits 9 to E are set, there are six
slots present with locations 9 to E.
const
gestaltNuBusConnectors = 'sltc'; {NuBus connector bitmap}
NOTE:
This selector does not return information about the Macintosh IIsi
slot.
snd (System [6.0.4])
gestaltSoundAttr
Returns information about the sound capabilities of the machine.
const
gestaltSoundAttr = 'snd '; {sound attributes}
gestaltStereoCapability = 0; {can play stereo sounds}
gestaltStereoMixing = 1; {mixes channels into single}
{ signal}
gestaltSoundReserved = 2;
gestaltSoundIOMgrPresent = 3; {new sound input routines avail.}
gestaltBuiltInSoundInput = 4; {built-in sound input device
{ available}
gestaltHasSoundInputDevice = 5; {some sound input device avail.}
gestaltPlayAndRecord = 6; {built-in hardware can play and}
{ record simultaneously}
{ *AS03/AS04}
gestalt16BitSoundIO = 7; {sound hardware can play and}
{ record 16-bit samples *AS04}
gestaltStereoInput = 8; {sound hardware can record}
{ stereo *AS04}
gestaltLineLevelInput = 9; {sound input port requires}
{ line level *AS04}
gestaltSndPlayDoubleBuffer = 10; {play from disk available *AS04}
gestaltMultiChannels = 11; {multiple channel support}
{ *AS03/AS04}
gestalt16BitAudioSupport = 12; {16 bit audio data supported}
{ *AS04}
NOTES:
Bit 7 through 12 are not defined for versions of the Sound Manager
prior to version 3.0.
If the gestaltSndPlayDoubleBuffer flag is not set you can check for
the gestaltHasASC flag with the gestaltHardwareAttr selector. If this
is true both SndPlayDoubleBuffer and SndStartFilePlay are present.
*AD06
snhw (System [7.5])
(Sound Manager ext [3.0])
gestaltSoundHardware
Returns type of hardware used for sound?
const
gestaltSoundHardware = 'snhw'; {Sound Hardware}
gestaltASC = 'asc '; {ASC}
gestaltDSP = 'dsp '; {DSP}
gestaltClassicSound = 'clas'; {Classic Mac?}
gestaltAWAC? = 'awac'; {returned on PowerMac}
gestaltSing? = 'sing'; {returned on PB 540c}
spsl (PowerTalk ext [1.0?], part of PowerTalk)
gestaltSMPSPSendLetterVersion
Returns the SMP SendLetter version as INTEGER.
const
gestaltSMPSPSendLetterVersion = 'spsl'; {SMP Sendletter version}
stdf (System [7.0])
(Macintosh Easy Open cp [1.0?])
gestaltStandardFileAttr
Returns information about the Standard File Package.
const
gestaltStandardFileAttr = 'stdf';{Standard File attr.}
gestaltStandardFile58 = 0;
{StandardPutFile, StandardGetFile, CustomPutFile}
{ and CustomGetFile are available.}
gestaltStandardFileTranslationAware = 1; {*AD03/AS04}
gestaltStandardFileHasColorIcons = 2; {*AD03/AS04/AS05}
gestaltStandardFileUseGenericIcons = 3; {force the LDEF to use only}
{ the system generic icons}
{ *AT06}
gestaltStandardFileHasDynamicVolumeAllocation = 4;
{supports more than 20 volumes *AT06}
sysa (System [7.1.2?]) *AS04
gestaltSysArchitecture
Returns one of the following values, indicating the type of
architecture on which the application is currently running.
const
gestaltSysArchitecture = 'sysa'; {System Architecture type}
gestalt68k = 1;
gestaltPowerPC = 2;
sysv (System [6.0.4]) INF
gestaltSystemVersion
Returns the version number of the currently active System file as BCD.
const
gestaltSystemVersion = 'sysv'; {System file version}
NOTES:
Is it correct system 6.0.8 returns $0x0607? Can you determine if it is
actually 6.0.8 in another way?
In addition KanjiTalk 6.0.7 (Japanese System) and other non-Roman
versions return $0606. See the 'osyv' selector.
System J-6.0.7.1 returns $0609
System 7.1.2 (for Power Macintosh) apparently returns an incorrect
version number ($0710) when in 68K mode with a PPC Upgrade card.
(Rick Gansler)
There are some system versions (like International System 6.0.8.1 or
7.0.1.1) which just return the normal version number, i.e. 6.0.8 and
7.0.1.
tabl (System [6.0.4])
gestaltSelectorTable?
Returns a handle to the Gestalt selector table itself.
const
gestaltSelectorTable? = 'tabl'; {Gestalt Table address}
WARNING:
Although this information isn't officially confirmed, it is probably
correct. But it is likely to go away in future systems.
NOTE:
The Gestalt selector table is kept in a resizable block in the system
heap. The last item in the table is a dummy entry (INVALID), marked by
a selector OSType(MaxLongInt). (Marco Piovanelli, he also has some
snippet Pascal code to list all selectors)
tbtt (System [6.0.8])
gestaltToolboxTable
Returns the base address of the Toolbox trap table.
const
gestaltToolboxTable = 'tbtt'; {Toolbox trap table base}
te (System [6.0.5])
gestaltTextEditVersion
Returns a value that indicates which version of TextEdit is present.
const
gestaltTextEditVersion = 'te '; {TextEdit version}
gestaltTE1 = 1;
gestaltTE2 = 2;
gestaltTE3 = 3;
gestaltTE4 = 4;
gestaltTE5 = 5;
======================================================================
Version numbers for TextEdit
======================================================================
Returned value New Features System software Hardware
----------------------------------------------------------------------
gestaltUndefSelector Multistyled TE before 6.0.4 all
gestaltTE1 6.0.4 Roman IIci
gestaltTE2 New width 6.0.4 non-Roman IIci
measurement hook
Script Mgr compatible
gestaltTE3 6.0.4 non-Roman non-IIci
gestaltTE4 TEFeatureFlag 6.0.5 all
gestaltTE5 Text width 7.0 all
measurement hook
----------------------------------------------------------------------
(Source: Inside Macintosh Text, p.2-23)
teat (Macintosh Drag and Drop ext [1.0])
gestaltTEAttr *AD05
Returns information about the functions and capabilities of TextEdit.
const
gestaltTEAttr = 'teat'; {TextEdit attributes}
gestaltTEHasGetHiliteRgn = 0; {TEGetHiliteRgn present}
tele (System [7.5])
gestaltTelephoneMgrAttr?
Returns information about the Telephone Mgr.
const
gestaltTelephoneMgrAttr? = 'tele';
gestaltTelephoneMgrPresent = 0;
gestaltPPCTelephoneLibPresent? = 1;
term (System [7.1])
gestaltTermMgrAttr
Returns information about the Terminal Manager.
const
gestaltTermMgrAttr = 'term'; {Terminal Mgr attributes}
gestaltTermMgrPresent = 0; {Terminal Mgr is present}
gestaltTermMgrErrorString = 2; {*AS04}
thds (Thread Manager ext [1.1]) *AD04
(QuickDraw GX ext [1.0?])
(System [7.1.2?])
gestaltThreadAttr
Returns information about the Thread Manager.
const
gestaltThreadAttr = 'thds'; {Thread Manager attributes}
gestaltThreadsPresent = 0; {bit true if Threads present}
gestaltSpecificMatchSupport = 1; {bit true if ‘exact match’}
{ API supported}
gestaltThreadsLibraryPresent = 2; {bit true if ThreadsLib is}
{ present}
gestalt??? = 4; {unknown}
NOTE:
IM OS Utilities lists this selector as 'gestaltThreadMgrAttr'.
tmgr (System [6.0.4])
gestaltTimeMgrVersion
Returns a value that indicates the version of the Time Manager.
const
gestaltTimeMgrVersion = 'tmgr'; {Time Mgr version}
gestaltStandardTimeMgr = 1; {Standard Time Mgr}
gestaltRevisedTimeMgr = 2; {Revised Time Mgr}
gestaltExtendedTimeMgr = 3; {Extended Time Mgr}
tpad (System? [7.5?] on PowerBook 520/540?)
Indicates precense of a trackpad? As such used in the 'IsTrackPad.c'
file included with the Apple Guide Authoring Kit.
tsma (System? [???])
gestaltTSMgrAttr *AS14
Returns information about the Text Services Manager.
const
gestaltTSMgrAttr = 'tsma'; {Text Services Mgr attributes}
gestaltTSMDisplayMgrAwareBit = 0; {TSM knows about Display Mgr}
tsmv (System [7.1])
gestaltTSMgrVersion *AT05
Returns Text Services Manager version in BCD.
const
gestaltTSMgrVersion = 'tsmv'; {Text Services Mgr version}
tv (System? [???])
(Video Startup ext [1.0], part of European Video Installer)
gestaltTVAttr *AS14
Returns information about the TV capabilities?
const
gestaltTVAttr = 'tv '; {TV Version [huh? ed.]}
gestaltHasTVTuner = 0; {supports Philips FL1236F}
{ video tuner}
gestaltHasSoundFader = 1; {supports Philips TEA6330}
{ Sound Fader chip}
gestaltHasHWClosedCaptioning = 2; {supports Philips SAA5252}
{ Closed Captioning}
gestaltHasIRRemote = 3; {supports CyclopsII Infra Red}
{ Remote Control}
gestaltHasVidDecoderScaler = 4; {supports Philips SAA7194}
{ Video Decoder/Scaler}
gestaltHasStereoDecoder = 5; {supports Sony SBX1637A-01}
{ stereo decoder}
ufox (Foreign File Access ext [4.0], part of Apple CD-ROM Software) *AT03
gestaltForeignFAVersion?
Returns Foreign File Access version in BCD.
const
gestaltForeignFAVersion? = 'ufox'; {Foreign File Access version}
NOTE: The returned version is obtained from 'vers' resource ID# 1.
vers (System [6.0.4])
gestaltVersion
Returns the version of Gestalt as INTEGER.
const
gestaltVersion = 'vers'; {Gestalt version}
NOTE:
Usually version 1 is present. On machines with ROM version 1917
(Quadra 840AV, PowerMacs etc.) version 4 is present.
Version 5 is installed by System 7.5 adding support for the
GestaltValue calls? (Rene Ros)
via1 (System [6.0.4, discontinued])
gestaltVIA1Addr
Returns the address of VIA 1.
const
gestaltVIA1Addr = 'via1'; {VIA 1 address}
via2 (System [6.0.4, discontinued])
gestaltVIA2Addr
Returns the address of VIA 2.
const
gestaltVIA2Addr = 'via2'; {VIA 2 address}
vm (System [6.0.4])
(RAM Doubler [1.0] by Connectix Corporation)
gestaltVMAttr
Returns information about virtual memory.
const
gestaltVMPresent = 0; {set; virtual memory present}
gestaltVMNotInstalled = 0; {clear; virtual memory not present}
NOTE:
Future OS may have VM always on but this is not reported by this
selector. A future selector will tell if the microkernal is running
and thus if VM is actually used. *AD10
wma. (System [7.0])
(Responder ext [2.0?])
gestaltResponderAttr
Returns information about the Workstation Management Agent a.k.a.
Responder.
const
gestaltResponderAttr = 'wma.'; {Responder attributes}
gestaltResponderPresent = 0; {Responder is present}
xlat (Macintosh Easy Open cp [1.0]) *AD03
gestaltTranslationAttr
Returns information about the Translation Manager.
const
gestaltTranslationAttr = 'xlat'; {Translation Mgr attrib.}
gestaltTranslationMgrExists = 0; {TM present}
gestaltTranslationMgrHintOrder = 1; {TRUE if hint order}
{ reversal bug is fixed}
gestaltTranslationPPCAvail = 2; {PPC Lib. available}
gestaltTranslationGetPathAPIAvail = 3; {GetFileTranslationPath}
{and GetPathTranslationDialog available}
gestalt??? = 4; {by MEO 1.1}
xttt (System [6.0.8])
gestaltExtToolboxTable
Returns the base address of the Extended Toolbox trap table.
const
gestaltExtToolboxTable = 'xttt'; {Extended Toolbox trap table}
Apple Additional Software
-------------------------
arb (Serial Port Arbitrator ext [1.0], part of Apple Remote Access)
gestaltArbitorAttr *AD02
Returns information about the Serial Port Arbitration.
const
gestaltArbitorAttr = 'arb '; {Serial Port Arbitration}
{ attributes}
gestaltSerialArbitrationExists = 0; {Serial Port Arbitration}
{ installed}
cltn (QuickDraw GX [1.0])
gestaltCollectionMgrVersion
Returns the version of the Collection Manager as NumVersion.
const
gestaltCollectionMgrVersion = 'cltn'; {Collection Mgr version}
NOTE:
The Collection Manager is a set of routines for maintaining tagged
collections of data; GX uses it to support the "tags" that you can
attach to GX objects, for holding special data, including
user-defined data. (Lawrence D'Oliveiro)
fsm (File System Manager ext [1.2?])
gestaltFSMVersion *AD14
Returns File System Manager version as BCD.
const
gestaltFSMVersion = 'fsm ';
gfxa (QuickDraw GX [1.0])
gestaltGraphicsAttr
Returns information about the Graphics.
const
gestaltGraphicsAttr = 'gfxa'; {graphics attributes bits }
gestaltGraphicsIsDebugging = $0001;
gestaltGraphicsIsLoaded = $0002;
gestaltGraphicsIsPowerPC = $0004;
NOTE: Not bit values but bit masks? Use AND?
grfx (QuickDraw GX ext [1.0])
gestaltGraphicsVersion
Returns the version of the Graphics as INTEGER.
const
gestaltGraphicsVersion = 'grfx'; {Gestalt version selector}
gestaltCurrentGraphicsVersion = $00010000; {supposed value returned}
kids (At Ease [1.0])
kAtEaseGestalt
Returns a handle to a structure holding information about At Ease.
The following code was published by Apple *AT06:
#define kAtEaseGestalt 'kids'
typedef struct {
short giVersion; /* structure version */
short giIsActive; /* true if at ease is currently running */
short giAutoCreateAlias; /* if true then auto create alias */
short giRequestFloppy; /* if true then request floppy on new
saves */
short giStacksAreApps; /* if true then HyperCard stacks are shown
with applications */
FSSpec giItemsLocation; /* location of the At Ease Items folder */
} GestaltRec, *GestaltRecPtr, **GestaltRecHand;
mess (QuickDraw GX [1.0])
gestaltMessageMgrVersion
Returns the version of the Message Manager as NumVersion.
const
gestaltMessageMgrVersion = 'mess'; {Message Mgr version}
NOTE:
The Message Manager is an implementation of object-oriented-style
message passing within an inheritance hierarchy, that can be used from
non-OO languages.
It is used by the GX printing system, to allow the customization of
printing behaviour by letting applications (and developers of printing
extensions) intercept messages sent to the printer driver.
(Lawrence D'Oliveiro)
mtv2 (Video Player app [???])
(Video Startup ext [1.0], part of European Video Installer)
gestaltTV *AD16
"Indicates whether the Video Player app is present."
pmgr (QuickDraw GX [1.0])
gestaltPrintingMgrVersion
Returns the version of the QuickDraw GX Printing Manager as
NumVersion.
const
gestaltPrintingMgrVersion = 'pmgr'; {Printing Mgr version}
qdgx (QuickDraw GX [1.0])
gestaltGXVersion
Returns the version of QuickDraw GX as NumVersion.
const
gestaltGXVersion = 'qdgx'; {QuickDraw GX version}
srta (Speech Recognition ext [1.2.1?])
gestaltSpeechRecognitionAttr
Returns information about the Speech Recognition software.
const
gestaltSpeechRecognitionAttr = 'srta';
gestaltDesktopSpeechRecognition = 0; {Recognition using mic.}
gestaltTelephoneSpeechRecognition = 1; {FUTURE}
NOTE:
The Speech Recognition (1.2.1) only works on AV and PPC Macs, but the
selector is installed on all machines and the response value will
indicate the speech recognition is available. (Rene Ros)
srtb (Speech Recognition ext [1.2.1?])
gestaltSpeechRecognitionVersion
Returns the version of the Speech Recognition software as BCD.
const
gestaltSpeechRecognitionVersion = 'srtb';
NOTE:
The Speech Recognition (1.2.1) only works on AV and PPC Macs, but the
selector is installed on all machines and its presence will indicate
the speech recognition is available. (Rene Ros)
strm (Remote Access Aliases [1.0], part of Apple Remote Access)
gestaltRemoteAccessAttr *AD02
const
gestaltRemoteAccessAttr = 'strm'; {Remote Access attributes}
gestaltRemoteAccessExists = 0; {RA Connection Interface is}
{ available}
gestaltRemoteAccessCallOnly = 1; {checks for ARA client *AD15}
gestaltRemoteAccessMPServer = 2; {checks for ARA multi-port}
{ server *AD15}
gestaltRemoteAccessVers2 = 3; {checks for ARA 2.0 features}
{ *AD15}
tmTE (Inline Extension ext [1.0], part of KanjiTalk7)
gestaltTSMTEAttr *AS07
Returns information about the Text Services Manager for TextEdit.
const
gestaltTSMTEAttr = 'tmTE'; {TSM for TE attributes}
gestaltTSMTEPresent = 0; {TSM for TE is present}
tmTV (Inline Extension ext [1.0], part of KanjiTalk7)
gestaltTSMTEVersion *AS07
Returns the version of the Text Services Manager for TextEdit as BCD.
const
gestaltTSMTEVersion = 'tmTV'; {TSM for TE version}
gestaltTSMTE1 = $0100; {TSM for TE version 1.0}
ttsc (Text-To-Speech Manager ext [1.0?])
gestaltSpeechAttr
Returns information about the Speech Manager.
const
gestaltSpeechAttr = 'ttsc'; {Text-To-Speech Manager attrib.}
gestaltSpeechMgrPresent = 0; {bit true if Speech Mgr present}
gestaltSpeechHasPPCGlue = 1; {Speech Mgr has native PPC glue}
ws 1 (WorldScript I ext [7.1?])
gestaltWorldScriptIVersion?
Returns version of WorldScript I software as BCD.
const
gestaltWorldScriptIVersion? = 'ws 1';
XTND (??? [???])
gestaltXTNDAttr *AS11
Returns information about XTND Manager?
const
gestaltXTNDAttr = 'XTND';
gestaltPPCXTNDPresent = 1;
NOTE:
Is used in some code to check if XTND engine is present. However it is
unknown when it is installed, so supposedly it is meant for future
use. Like a built-in XTND engine in the System Software? When the
selector is installed all operations are dispatched through trap
_XTNDMgr ($ABF4) otherwise the library provides the code.
(Marco Piovanelli)
Third Parties Software
----------------------
!SYM (Symbionts ext [1.0] by B. Kevin Hardman)
gestaltSymbiontsTable
Returns a pointer to a structure containing the size of the System
Heap before and after loading the INITs.
const
gestaltSymbiontsTable = '!SYM'; {Symbionts address}
ADfd (AfterDark [2.0?] by Berkeley Systems, Inc.)
gestaltAfterDarkFolder *M05
Returns a pointer to a procedure that gives the DirID and vRefNum of
the 'After Dark Files' folder.
const
gestaltAfterDarkFolder = 'ADfd';
NOTE:
See for more information the AfterDark Gestalt header file (See
section 'Related Software' in the 'General Info' chapter for
availability)
ADrk (AfterDark [2.0] by Berkeley Systems, Inc.)
gestaltAfterDarkAttr *M05
Returns a longword bitmask containing public information about
After Dark.
const
gestaltAfterDarkAttr = 'ADrk'; {After Dark states}
eSystemIQActive = 0; {SystemIQx activity monitor active}
eSoundActive = 1; {AD has allocated a sound channel}
eADAcquiringPassword = 2; {After Dark has its password dialog up}
NOTE:
See for more information the AfterDark Gestalt header file (See
section 'Related Software' in the 'General Info' chapter for
availability)
AlaC (A La Carte ext [1.1?] by Denali Software Development)
gestaltALaCarte?
Returns the address of the A La Carte INIT global data. The structure
of the data is proprietary. The existence of the 'AlaC' selector
indicates that the A La Carte INIT is loaded.
const
gestaltALaCarte? = 'AlaC';
ApoL (Apollo ext [1.0] by Jeremy Roussak)
gestaltApolloTable
Returns a handle to an instance of a structure.
const
gestaltApolloTable = 'ApoL'; {Apollo address}
NOTE:
See for more information the Programmers' Information chapter in the
Apollo documentation. (Jeremy Roussak)
ASHI (Arashi app [???] by Juri Munkki)
???
Returns information about the presence of Arashi by returning one (1)
if loaded, and zero (0) when removed.
AuBu (AutoBuild ext [1.0] by Rene G.A. Ros)
gestaltAutoBuildVersion
Returns the version of AutoBuild as NumVersion.
const
gestaltAutoBuildVersion = 'AuBu'; {AutoBuild version}
NOTE: The returned version is obtained from 'vers' resource ID# 1.
BBlk (Basic Black cp [1.3], by Mason L. Bliss)
gestaltBasicBlackAddr
Returns the address of Basic Black's patch globals.
const
gestaltBasicBlackAddr = 'BBlk'; {Basic Black address}
NOTE:
See documentation included with Basic Black for more information.
BIFF (QM Biff ext [1.0] by Patrick C. Beard)
???
Determines if there is mail (QuickMail). The response long word is 1
if you have mail, and 0 if you don't.
Cafe (Coffee Break appl [1.0] by Thomas Reed)
gestaltCoffeeBreakAddr?
Returns a pointer to a code resource owned by Coffee Break.
Details are private.
const
gestaltCoffeeBreakAddr? = 'Cafe';
CKI3 (AETracker cp [3.0] by C.K. Haun)
gestaltAETrackerAddr
This selector returns a pointer to the external interface routine for
AETracker, details of which are in the AETracker interface guide.
(C.K. Haun)
const
gestaltAETrackerAddr = 'CKI3'; {AETracker address}
CsWT (Desktop Strip cp [1.0b1] by Sigurdur Asgeirsson)
gestaltDesktopStripAttr?
Returns information about the installed Desktop Strip software.
const
gestaltDesktopStripAttr? = 'CsWT';
gestaltDesktopStripPresent? = 0;
dBgP (DBugR cp [1.0?] by Alessandro Levi Montalcini)
???
Returns a pointer to a data structure with the preferences,
identical to the data in the PREF resource, for which a template
is included.
NOTE: The d is actually the option-d character (ASCII $B6).
EagL (Eagle ext [1.4], part of Apollo 1.1 by Jeremy Roussak)
gestaltEagleAttr?
Returns information about the state of the Eagle background
application.
const
gestaltEagleAttr? = 'EagL'; {Eagle attributes}
gestaltEaglePPCReady? = 0; {Eagle can accept next PPC}
FPUE (SoftwareFPU cp [3.0?] by John Neil & Associates) *M06
gestaltSoftwareFPUAddr?
Detects presence of SoftwareFPU.
If the result of the Gestalt call is noErr, then SoftwareFPU is
installed, and the 68881 FPU reported by the gestaltFPUType selector
is an emulated FPU. The value returned in the response is private and
should be ignored.
const
gestaltSoftwareFPUAddr? = 'FPUE';
FrcP (Decor cp [1.0] by Francois Pottier)
gestaltDecorAddr
Returns a pointer to a structure which can be read or changed, and
enables programmers to change the picture on the desktop.
const
gestaltDecorAddr = 'FrcP'; {Decor address}
NOTES:
See for more information on how to use this structure the
documentation included with Decor 1.0 or later.
The c is actually the option-c character (ASCII $8D).
Gast (Gestalt! appl [2.9.2] by Roland Mansson)
gestaltGestaltVersion
Returns the version of the application as NumVersion.
GestaltValue is removed when application quits. Just for fun.
(Roland Mansson)
const
gestaltGestaltVersion = 'Gast'; {Gestalt! version}
NOTE: The a is actually the option-u/a character (ASCII $8A).
GTLK (GestaltTalk code by Brigham Stevens, Apple Computer DTS)
???
Snippet code, see documentation. (See section 'Related Software'
in the 'General Info' chapter for availability).
GWat (GestaltWatch ext [1.0] by Scot Bronson)
???
Returns pointer to structure where collected information is stored.
NOTE: In development, not yet available.
IF 8 (Speak Note cp [???] by Glenn R. Howes)
gestaltSpeechNoteAttr?
Returns information about the installed copy of Speak Note.
const
gestaltSpeechNoteAttr? = 'IF 8';
gestaltSpeechNoteAvailable = 0;
Lnch (Network Time cp [2.0] by Pete Resnick)
(First Launch Gestalt INIT code resource, by Pete Resnick)
gestaltFirstLaunchAttr
Returns info on whether the _Launch trap has been called by the
System.
const
gestaltFirstLaunchAttr = 'Lnch'; {_Launch information)
gestaltFirstLaunchDone = 0; {_Launch called, INIT time over}
NOTE:
Bit 0 of the response, gestaltFirstLaunchDone, indicates whether the
_Launch trap has been called since startup of the machine. All other
bits are reserved and currently 0. Even if not installed at INIT time,
Network Time will install the Gestalt selector if it is not already
there when the control panel is opened and automatically set
bit 0 to 1.
68000 assembler source code is available for the INIT that installs
the selector, and INIT resource -4048 from Network Time may be
stolen (and renumbered as desired) and used in any INIT file as
desired. (Pete Resnick)
NIPX (Novell MacIPX cp [1.0.1] by Novell Inc.)
gestaltNovellIPXVersion
Returns the version of MacIPX as NumVersion.
const
gestaltNovellIPXVersion = 'NIPX'; {MacIPX version}
NOTE:
If the selector returns an error (i.e. no such selector?) then MacIPX
is not installed. If the selector returns 0 then MacIPX is installed
but the driver is not open. Any other value is the version.
(Duane Murphy)
NMBT (Attention cp [0.6] by Marco Piovanelli)
gestaltAttentionAddr
The response value returned is a pointer to a read-only parameter
block in the system heap.
const
gestaltAttentionAddr = 'NMBT'; {Attention address}
NOTE: See for more detailed information the included ReadMe file.
NTim (Network Time cp [2.0] by Pete Resnick)
???
Returns information private to Network Time.
PNfs (FileSaver [3.0], part of Norton Utilities for Macintosh)
Returns a private structure used by various portions of the
Norton Utilities.
PPP (PPP mdev [???], part of MacPPP by Merit Network, Inc. and the
University of Michigan)
???
Returns the address of the Lap globals as documented in the header
file 'ppp.h.source'. It's an absolutely enormous struct that contains
among other things function pointers to let you open and close MacPPP.
(Richard Buckle)
const
??? = 'PPP ';
NOTE:
Source code of MacPPP is available at:
ftp://merit.edu/pub/ppp/mac/
PWRS (PwrSwitcher cp [1.0] by David B. Lamkins)
gestaltPwrSwitcherTable
Returns a pointer to a private data structure (undocumented).
const
gestaltPwrSwitcherTable = 'PWRS'; {Power Switcher address}
SAVC (AfterDark cp [2.0] by Berkeley Systems, Inc.)
(Basic Black cp [1.3.3] by Mason L. Bliss)
(DarkSide of the Macintosh [4.0] by Tom Dowdy)
gestaltScreenSaverControl *M05
Returns a pointer to a procedure of type
typedef pascal OSErr (*SaverControlProcPtr) (SaverCommand command);
which allows controlling the screen saver.
const
gestaltScreenSaverControl = 'SAVC';
NOTE:
See for more information the AfterDark Gestalt header file (See
section 'Related Software' in the 'General Info' chapter for
availability)
SAVR (AfterDark cp [2.0] by Berkeley Systems, Inc.)
(Arashi app [???] by Juri Munkki)
(Basic Black cp [1.3.3] by Mason L. Bliss)
(Coffee Break app [1.0] by Thomas Reed)
(DarkSide of the Macintosh [4.0] by Tom Dowdy)
gestaltScreenSaverAttr *M05
Returns information about the current screen saver. Defined if a
screen saver is installed.
const
gestaltScreenSaverAttr = 'SAVR'; {Screen saver attributes}
gestaltSaverTurnedOn = 0; {saver enabled/disabled}
gestaltSaverAsleep = 1; {saver currently asleep}
gestaltSaverDemoMode = 2; {saver sleeping in demo mode}
gestaltSaverPasswordMode = 3; {saver sleeping in password-}
{ protected mode}
gestaltAppDrawingDisabled = 4; {QD drawing disallowed between}
{ module animation frames}
NOTE:
See for more information the AfterDark Gestalt header file (See
section 'Related Software' in the 'General Info' chapter for
availability)
SDdD (Shutdown Delay cp [2.0.1] by Alessandro Levi Montalcini)
kSDDelayCreator
Returns a pointer to a data structure described in the documentation
included with Shutdown Delay.
const
kSDDelayCreator = 'SDdD';
NOTE: The d is actually the option-shift v character (ASCII $D7).
SHCM (Shared Code Manager ext [1.0] by Eric Schlegel of Microsoft Corp.)
gestalt???
Returns a pointer to an undocumented entrypoint into the Shared Code
Manager.
const
gestalt??? = 'SHCM';
NOTE:
The Shared Code Manager (1991) is a simple DLL mechanism that is
currently used by Microsoft's Mac OLE 1.0 (Object Linking & Embedding)
and the applications that use OLE 1.0. (Eric Schlegel)
SLip (StuffIt SpaceSaver ext [1.0?] by Aladdin Systems, Inc.)
gestaltStuffItSpaceSaverAddr
Returns the address of the SpaceSaver "command module" which allows
developers to access all the functions of SpaceSaver.
(Leonard Rosenthol)
const
gestaltStuffItSpaceSaverAddr = 'SLip';
SPAL (SpeakAlert cp [1.0] by Brian Stern)
gestaltSpeakAlert
Details are private to SpeakAlert.
const
gestaltSpeakAlert = 'SPAL';
TExT (FileTyper Menu cp [none], part of FileTyper by Daniel Azuma)
gestaltTyperMenuAttr
Returns information about the FileTyper Menu's operation.
const
gestaltTyperMenuAttr = 'TExT';
gestalt??? = 0; {TRUE = NO item added to Finder's}
{ File menu}
WARNING:
No currently released version of FileTyper Menu (up to and including
4.1.1) installs this selector, but future versions may. Check for the
existence of this selector first, if you use it. (Daniel Azuma)
TMON (TMON Pro [3.0] by ICOM Simulations, Inc.)
???
The value returned is a pointer to a Monitor information block. *M04
(Scott Bronson)
Typ4 (FileTyper Menu cp [4.1.1], part of FileTyper by Daniel Azuma)
gestaltTyperMenuPriv
Returns private information, the existence of this selector indicates
FileTyper Menu is installed.
const
gestaltTyperMenuPriv = 'Typ4';
NOTE:
Third parties can determine if FileTyper Menu is installed by
checking for the existence of this selector. However, the actual value
returned is private and subject to change. (Daniel Azuma)
UMAM (Authentication Manager cp [1.0.7] by Robert John Churchill of the
University of Michigan)
gestaltAuthManVersion
Returns the version of the Authentication Manager as Double BCD.
const
gestaltAuthManVersion = 'UMAM';
YeHa (SpeedyFinder7 cp [1.5.4?] by Victor Tan)
???
Returns a pointer to a private data structure (undocumented).
NOTE:
The structure to which the Gestalt selector refers changes almost
invariably from version to version of SF7. Should someone work out
parts of the structure of the selector keep in mind that it will
almost certainly change in the next minor release and definitely with
the next major release. (Victor Tan)
Unknown Gestalt Selector Codes
==============================
The following sections list selector codes of which the meaning is unknown.
Apple Software
--------------
OSType(7)
(System [6.0.4])
Returns LongInt('carl') and a result code of noErr.
OSType(13)
(System [6.0.4])
Returns LongInt('bbmc') and a result code of noErr.
3615 (Express Modem cp [1.0], part of Express Modem Software)
a pc (PC Setup? cp [1.0?], part of Quadra 610-DOS software)
admn (AppleShare Admin appl [3.0])
gestaltASAdminAttr?
const
gestaltASAdminAttr? = 'admn';
gestaltASAdminPresent? = 0;
AgVU (Agent VU ext [2.0?], part of Virtual User)
afps (AppleShare ext [3.5?], part of System 7.5)
Bits 0 and 16 set.
aint (System? [7.1.1?])
NOTE: Returns 2 on a C660AV and Q840AV.
apml (PowerTalk Manager ext [1.0?], part of PowerTalk)
Bit 0 and 31 set.
aslm (Shared Library Manager ext [1.1.1?])
(System? [7.5?])
gestaltSharedLibraryMgr?
Returns the version of the Shared Library Manager as BCD in high word
and information about the SLM in low word?
const
gestaltSharedLibraryMgr? = 'aslm';
gestaltSharedLibrary??? = 0;
gestaltSharedLibrary??? = 1;
NOTE:
This selector appears to be both an attribute and version selector:
- the version is BCD in the high word (confirmed in version 1.1.2
and 2.0 doesn't contradict this)
- the attributes are in the low order word (but I don't know the
meanings)
(John Mancino)
Returns zero when the Shared Library Mgr is not initialized?
(Rene Ros)
asps (AppleShare Print Server appl [3.0])
gestaltASPrintServerAttr?
const
gestaltASPrintServerAttr? = 'asps';
gestaltASPrintServerPresent? = 0;
AtEa (At Ease Startup [2.0?], part of At Ease for Workgroups)
bART (MacCheck app [1.0])
BaRT (MacCheck app [1.0])
bast (Performa cp [1.1], part of System 7.1P)
batt (Powerbook Duo Enabler [1.0])
(System [7.5])
(System Enabler 111 [1.0])
(System Enabler 121 [1.0])
(System Enabler 131 [1.0])
(System Enabler 201 [1.0]))
Returns information about the PowerBook battery?
The debugger name for the routine which returns the response for this
selector is called 'GETTIMELEFT'. But in what units? And what time?
I've only seen the value 0, 5 or 6 returned. The GDEF calls the Power
Manager (_PMgrOp [$A085 with D0=$00]) to get the info but I can't find
which function. (Rene Ros)
brcn (Screen? cp [1.0?] on Color Classic)
brcN (Energy Saver cp [1.0?], part of Monitor Energy Saver)
bugx (System [7.5])
(System Update ext [3.0])
NOTE:
The System Update reserves the 'bugx', ‘bugy’ and ‘bugz’ gestalt
selectors to indicate which fixes are installed on a given machine.
These are for Apple internal use only, and developers should not rely
on these. There is no guarantee that they will be supported in future
versions of Macintosh system software. *AT06
bugy (32-bit System Enabler [1.0])
(Hardware System Update ext [1.0])
(Network Launch Fix ext [1.0])
(Sound Manager ext [3.0])
(System? [7.1?])
(System enabler 065)
gestaltEnablerAttr?
const
gestaltEnablerAttr? = 'bugy'; ?
gestaltEnablerEgretDispatchPatch? = 0; {these correct the system}?
gestaltEnablerEgretTimePatch? = 1; { clock and modem perf.}?
gestalt??? = 2; {unknown, Hardware Upd.}
gestaltEnablerEgretTickHandlerPatch? = 3; { see bit 0 & 1}?
gestalt??? = 4; {unknown, Hardware Upd.}
gestaltEnablerSCSIPatch? = 5; {floppy drive fixed}?
gestalt??? = 6; {unknown, Hardware Upd.}
gestaltEnabler32bit? = 7; {32-bit enabler present}?
gestalt??? = 9; {unknown, Sound Mgr 3.0}
gestalt??? = 11; {unknown, Hardware Upd.}
gestalt??? = 12; {unknown, Hardware Upd.}
gestalt??? = 13; {unknown, Hardware Upd.}
gestalt??? = 14; {unknown, Hardware Upd.}
gestalt??? = 15; {unknown, Hardware Upd.}
gestalt??? = 16; {unknown, Hardware Upd.}
gestaltEnablerKeyboardPatch? = 17; {corrects Adjustable Kbd}
{ gestaltKeyboardType}
{ response?}
gestalt??? = 18; {unknown, Hardware Upd.}
gestalt??? = 19; {unknown, ???}
gestalt??? = 24; {unknown, ???}
gestalt??? = 25; {unknown, ???}
gestalt??? = 26; {unknown, ???}
gestaltNetworkLaunchFix? = 27; {fix problem with appl. on}
{ server launch with 68040}
gestalt??? = 28; {unknown, ???}
gestalt??? = 31; {unknown, ???}
WARNING:
These are ALL guesses. Well not entirely, I used the ResEdit CODE
Editor to peek into the 32-bit System Enabler, Hardware System update
and other software. Please check if I'am right. You should be able to
find some of the answers in the INIT resource of the Hardware Update
and the names of the PTCH resources in version 1.0 were also useful...
The System Enablers (for new Macintosh models) don't seem to install
or change any Gestalt selector to indicate their presence.
NOTE:
The System Update reserves the 'bugx', ‘bugy’ and ‘bugz’ gestalt
selectors to indicate which fixes are installed on a given machine.
These are for Apple internal use only, and developers should not rely
on these. There is no guarantee that they will be supported in future
versions of Macintosh system software. *AT06
bugz (System [7.0]/Tune-up ext)
NOTE:
The System Update reserves the 'bugx', ‘bugy’ and ‘bugz’ gestalt
selectors to indicate which fixes are installed on a given machine.
These are for Apple internal use only, and developers should not rely
on these. There is no guarantee that they will be supported in future
versions of Macintosh system software. *AT06
cate (Catalogs Extension? ext [???], part of PowerTalk)
Bit 0 set.
CDJR (Apple Menu Options cp [1.0], part of System 7.5)
(ExtendedAppleMenu [???] by Chris Derossi)
cfmg (System [7.1.2 on PowerMac])
clbv (PowerTalk ext [1.0?], part of PowerTalk)
Bit 0 set.
comp (QuickDraw Font Plus ext [???], part of the KanjiTalk 7.1)
NOTES:
The name "QuickDraw Font Plus" is translated from Japanese and may be
translated differently by Apple Computer, Inc.
I think 'comp' stands for 'composite', as the INIT contains patches to
the Font Manager needed to handle 'composite font suitcases'.
(Marco Piovanelli)
ctxm (???)
cuda (???, on Performa 630TV)
ddsk (DropDisk app [1.0b3], formerly Mount'em app by Mike Wise and
Chris Cotton of Apple Computer)
Only installed if DropDisk driver is loaded. Looks like the highword
contains the version (of driver or application?) as BCD, while the
low-word is a mystery.
NOTE:
See also the 'mtem' selector installed by Mount'em 1.0b1 and 1.0b2.
detc (???)
diag (Automated Diagnostics ext [1.0], part of Apple Personal
Diagnostics 1.0)
doub (WorldScript II ext [7.2?], part of KanjiTalk7 and
several language kits)
gestaltDoubleByteScriptVersion?
Returns the version of WorldScript II as BCD?
const
gestaltDoubleByteScriptVersion? = 'doub';
NOTE:
This selector seems to be installed by WorldScript II (the
System 7.1 ext needed to handle double-byte scripts like Japanese,
Korean and Traditional Chinese). Known returned value is $0x0710.
(Marco Piovanelli)
dude (Powerbook Duo Enabler [1.0])
(System [7.5])
(System Enabler 111 [1.0])
(System Enabler 121 [1.0])
(System Enabler 131 [1.0])
(System Enabler 201 [1.0]))
dudi (Powerbook Duo Enabler [1.0])
(System [7.5])
(System Enabler 111 [1.0])
(System Enabler 121 [1.0])
(System Enabler 131 [1.0])
(System Enabler 201 [1.0]))
fdbk (Speech Setup cp? [???], part of PlainTalk)
fdrs (Finder [7.1.1b1?], part of AOCE Developer's Kit)
Installed by Finder extension?
fnda (Finder [7.1.1])
NOTE: The a is actually the option-a character (ASCII $8C).
fnd& (Finder?, System? [7.1.2 on PowerMac?])
NOTE: The & is actually the option-shift-a character (ASCII $E5).
fnd* (Finder [7.1.1])
NOTE: The * is actually the shift-6 character (ASCII $F6).
fnd? (Finder [7.1.1b1?], part of AOCE Developer's Kit)
Installed by Finder extension?
fnd (Finder [7.1.1b1?], part of AOCE Developer's Kit)
Installed by Finder extension?
fndc (Finder [7.1.1])
fndn (Finder?, System? [7.1.2 on PowerMac?])
NOTE: The n is actually an option-n, n (ASCII $96).
FNDR (Finder [7.1.1b1?], part of AOCE Developer's Kit)
Installed by Finder extension?
futr (ThreadsINIT ext [2.0?], part of Threads Package)
gFax (Fax Extension ext [1.1?], part of Express Modem Software)
gntz (System [7.1.2 on PowerMac])
gpad (System? [7.5?])
gprf (System? [7.5?])
HAM (Apple Menu Options cp [1.0], part of System 7.5)
(HAM ??? [???] by Inline Design)
harp (PowerBook cp? [7.2?])
hcsl (Finder [7.1.1b1?], part of AOCE Developer's Kit)
heap (System [7.1.2 on PowerMac])
Bits 1 and 5 set.
hgfd (AppleShare File Server appl [3.0])
gestaltASFileServerAttr?
const
gestaltASFileServerAttr? = 'hgfd';
gestaltASFileServerPresent? = 0;
HrIt (HearIt cp [1.0])
iadj (System? [7.1.2?] with PowerTalk?)
(Display Enabler ext, Icon relocation INIT ID#3 [1.0])
idsp (System? [7.1?] on Macs with sound input?)
Values found: $FFFF FFFF, $0x000C, $0x0000
iic (???, on Performa 630TV)
immg (??? [???] on PowerBook 520/540? and Performa 630TV)
intD (??? [???])
NOTE:
This is a mystery selector. It isn't installed by any software, as
far as I know, but the Finder 7.1 checks for this selector in certain
situations. (Marco Piovanelli)
jkbd (??? (Japanese!) ext [1.0], part of KanjiTalk)
lang (WorldScript II ? ext [7.2?], part of KanjiTalk7 and
several language kits)
gestalt???Attr
Returns information about the Language Manager?
const
gestaltLanguageMgrAttr = 'lang';
gestaltLanguageMgr??? = 0;
ldap (???)
lngb (WorldScript II ? ext [7.2?], part of KanjiTalk7 and
several language kits)
Value found: $00001FFF.
lstk (Speech Setup cp? [???], part of PlainTalk)
ltma (Link Tool Manager ext [2.0?], part of Apple Remote Access 2.0)
gestaltLinkToolVersion?
Returns the version of the Link Tool Manager as NumVersion?
const
gestaltLinkToolVersion? = 'ltma';
NOTE:
The only value I've seen returned was $02002008, which would mean
'2.0d8' which was not correct since the 'vers' recource said '2.0f0'.
The value is hardcoded in the .LTM Driver resource. (Rene Ros)
mash (System [7.1P?]/At Ease [1.0?])
NOTE:
The Starter cp (part of System 7.1P) and Launcher cp (part of
System 7.5) both contain a 'mash' resource and includes a template for
it. Can this be the same data-structure? (Rene Ros)
mbox (Mailbox Extension? ext [???], part of PowerTalk?)
gestaltMailboxVersion?
Returns version of Mailbox software as INTEGER.
const
gestaltMailboxVersion? = 'mbox';
MClk (Date & Time cp [7.5], part of System 7.5)
(SuperClock! cp [4.0] by Steve Christensen)
mfdr (At Ease [1.0])
mjik (MenuMagic ext [1.0], part of System 7.1 Pro and 7.5)
mtem (Mount'em app [1.0b1-1.0b2] by Mike Wise and Chris Cotton of
Apple Computer)
See the 'ddsk' selector installed by DropDisk 1.0b3 and later.
mtv! (TV Setup cp [1.0], part of System for Macintosh TV?)
NOTE:
Not seen installed, disassembled control panel, meaning unknown.
It's probably an address. (Rene Ros)
NubA (Debugger INIT ext [1.0] distributed with MetroWerks CodeWarrior)
NubD (Debugger INIT ext [1.0] distributed with MetroWerks CodeWarrior)
NubH (Debugger INIT ext [1.0] distributed with MetroWerks CodeWarrior)
NubV (Debugger INIT ext [1.0] distributed with MetroWerks CodeWarrior)
octb (System? [7.5?] on PowerBook 520/540?)
ot (??? [???])
gestaltOpenTransportAttr?
Returns information about the Open Transport software?
const
gestaltOpenTransportAttr? = 'ot ';
gestaltOpenTransportPresent? = 0;
PhoN (PowerBook Setup cp [7.3.1?], PhoneINIT INIT resource)
port (Powerbook Duo Enabler [1.0])
(System [7.5])
(System Enabler 111 [1.0])
(System Enabler 121 [1.0])
(System Enabler 131 [1.0])
(System Enabler 201 [1.0])
gestaltPortAttr?
Returns information about the ports?
const
gestaltPortAttr? = 'port';
gestaltHasInternalModem? = 0?;
gestaltHasExternalPrinter? = 1?;
gestaltHasExternalModem? = 2?;
NOTE:
System Enabler 201 and PowerBook Duo enabler contain an GDEF resource
which indicates bits 0, 1 and 2 can be set. (Rene Ros)
ppad (Performa cp [1.1], part of System 7.1P)
pprf (Performa cp [1.1], part of System 7.1P)
ptlk (Speech Setup cp? [???], part of PlainTalk)
pxtn (At Ease app [2.0?])
Remt (AutoRemounter cp [???])
scrf (System? [7.5?])
serh (System? [7.1.2?])
gestaltSerialHardware?
Returns type of hardware used for serial I/O?
const
gestaltSerialHardware? = 'serh'; {Serial Hardware}
gestaltClassicSer? = 'Clas'; {returned on PPC 8100/80 (GeoPort?)}
shal (System [7.1?])
NOTE: Returns 2 on PowerMac and 1 on Centris 660AV
slnk (MNPLinkTool? [1.0], part of Apple Remote Access)
sndx (Sound Manager ext [3.0]?)
gestaltSoundMgrAttr?
const
gestaltSoundMgrAttr? = 'sndx'?;
gestaltSoundMgrPresent? = 0?
thng (ThreadsINIT ext [2.0?], part of Threads Package)
thrd (ThreadsINIT ext [2.0?], part of Threads Package)
udsk (System [7.1.2 on PowerMac])
udsv (System [7.1.2 on PowerMac])
vdrc (PC Exchange? cp [1.0?])
vmbs (System [7.0])
(RAM Doubler [1.0] by Connectix Corporation)
gestaltVMBackingStoreRef?
Returns the file reference number of the Virtual Memory storage file
if VM is present.
const
gestaltVMBackingStoreRef? = 'vmbs';
vmcl (System, VM on [7.0])
vmem (RAM Doubler [1.0] by Connectix Corporation)
gestaltVMExtensionMgr?
Returns type of software used to extend the Virtual Memory Mgr?
const
gestaltVMExtensionMgr? = 'vmem';
gestaltRAMDoubler? = 'RaM2';
NOTE: See 'Reports' chapter (RAMDoubler section) for more information.
Third Parties Software
----------------------
*DC* (DepthCharge cp [???] by Maf Vosburgh)
AClk (AutoClock Extension ext [1.3?] by Jean-Pierre Gachen)
ADex (AfterDark [2.0?] by Berkeley Systems, Inc.)
ADii (AfterDark [2.0?] by Berkeley Systems, Inc.)
NOTE:
Not installed by AfterDark but the GDEF indicates it is able to return
a response.
ADr2 (AfterDark [2.0?] by Berkeley Systems, Inc.)
NOTE:
Not installed by AfterDark but the GDEF indicates it is able to return
a response.
ADRC (DDExpand appl [3.7.7?] by Fifth Generation Systems)
ADTK (Talk*Control cp [???] by 2Way Computing, Inc.)
AP00..AP06
(RapidLock cp or RapidTrak cp [1.1], part of RapidTrak software by
Insignia Solutions Inc.)
It seems these selectors are installed for each harddisk connected to
your Macintosh. The last two bytes of the selector are the SCSI ID.
Although the third byte can mean something else, because perhaps
'AP17' (listed below) is probably also installed by
RapidLock/RapidTrack.
AP17 (???)
ApWi (ApplWindows cp [2.0?] by Hiro Yamamoto)
ASTN (Asante EN/SC ext [???] by Asante Technologies, Inc.)
aYmm (AfterDark [2.0?] by Berkeley Systems, Inc.)
AzNe (NameView cp [2.7?] by AStar Technologies, Inc.)
A–Tr (Trapper ext [1.0?] by Alessandro Levi Montalcini)
Blad (Blood cp [1.0.1?] by Alessandro Levi Montalcini)
NOTES:
The B is actually the option-s character (ASCII $A7).
The d is actually the option-d character (ASCII $B6).
bMRN (Super Boomerang cp [4.0?], part of NOW Utilities 4.0.1p package
by NOW Software)
CDmn (CDMenu cp [1.0?] by Henrik Eliasson)
CHSR (ChooserUser [1.2?] by Maurice Volaski)
CiCN (Color ICON Mania cp [1.0] by Yosuke Suzuki)
DanS (PowerClick cp [1.0] by Daniel A. Segel)
DCDt (NoDesktopCleanup cp [1.0?] by Alessandro Levi Montalcini)
DCKc (Keys! cp [1.0] by Stefan Kurth)
NOTE: The lowercase c is actually the control-q (Command key sign)
character (ASCII $11).
DD37 (DiskDoubler [3.7] by Fifth Generation Systems, Inc.)
DDAD (AutoDoubler cp [1.0?] by Fifth Generation Systems, Inc.)
DFlh (DiskFlash cp [1.0], part of ALSoft Power Utilities by ALSoft, Inc.)
DlgV (Dialog View cp [2.11], formerly List Font cp by James W. Walker)
See also 'LFnt'.
Dpth (DepthMaster cp [1.0] by Victor Tan)
DWG! (Volume Menu cp [1.0] by David Gladstone, Chris Burns, Julian Harris)
EDCN (PPPReport cp [1.0b3?] by Eric de la Musse)
EM20 (Extensions Manager cp [2.0] by Ricardo Batista)
ESCa (Escapade cp [1.0?] by Christopher R. Wysocki)
ESOC (Serial of Champions ext [???] by Mike Throckmorton)
Extn (NOW Startup Manager cp [4.0?], part of NOW Utilities 4.0.1p package
by NOW Software)
Fie (Icon7 ext [???] by Inline Designs)
gestaltIcon7?
fPth (FinderPaths cp? [???])
NOTE: The f is actually the option-f character (ASCII $C4).
fmci (FinderMenu INIT ext [1.0], part of UserLand's Frontier Runtime
package)
FtCg (FontPatchin cp [2.0?] by Keisuke Hara)
FW14 (FileWave Administrator ext [2.0?], part of FileWave 2.0
by Wave Research)
FWCP (File Tracker Controls cp [1.0] by Mark Aiken)
fWmM (Super Boomerang cp [4.0?], part of NOW Utilities 4.0.1p package
by NOW Software)
GrEG (Greg's Buttons ext [3.1.4?] by Greg Landweber)
GtOp (MenuExtend cp [1.0], part of ALSoft Power Utilities by ALSoft, Inc.)
gV00 (PowerPort cp? [???])
gV01 (PowerPort cp? [???])
gV02 (PowerPort cp? [???])
gV03 (PowerPort cp? [???])
gV04 (PowerPort cp? [???])
He20 (Helium cp [1.0?] by Robert L. Mathews)
HEID (Incognito cp [1.0?] by Manuel Veloso)
HPBG (HP Background ext [3.0?] by Hewlett-Packard Company)
GDEF always returns value 1.
HtLk (Reference Link ext [1.0] by James W. Walker)
iHnd (Invisible Hand cp [1.0] by Carl Mauer)
NOTE:
Because this cp patches the _Random trap you can use this selector to
determine its presence and refuse to continue.
Intj (Interjection ext [???])
JAiN (Rival cp by Inline Designs)
gestaltRival
NOTE: The i is actually the option-u/i character (ASCII $95).
jsm1 (???)
JXNM (NowMenus cp [4.0?], part of NOW Utilities 4.0.1p package
by NOW Software)
KBCF (Easy KEYS cp [1.5] by Kerry Clendinning)
KBCM (???)
KQae (KQ Apple Events ext [???], part of KeyQuencer
by Alessandro Levi Montalcini)
KQue (KeyQuencer cp [???], part of KeyQuencer
by Alessandro Levi Montalcini)
LFnt (Dialog View cp [???], formerly List Font cp by James W. Walker)
See also 'DlgV'.
LNCH (Talk*Control cp [???] by 2Way Computing, Inc.)
LxRZ (Retro.SCSI? ext [2.0?], part of Retrospect by Dantz Development
Corporation)
(Remote? cp [2.0?], part of Retrospect by Dantz Development
Corporation)
Mgc! (Wizard INIT ext [1.0], part of Disk Wizard by Francois Pottier)
MJC& (AutoMenus II cp [???] by Michael Conrad)
MV10 (TearOFF cp [???] by Bad Boys' Software)
nOAg (??? cp [1.2?], part of netOctopus by Pole Position)
nOAv (??? cp [1.2?], part of netOctopus by Pole Position)
Returns version as NumVersion?
NGst (NokNok cp [1.0?])
NkNk (NokNok cp [1.0?])
NowT (NOW Toolbox ext [4.0?], part of NOW Utilities 4.0.1p package,
by NOW Software)
PBUf (???)
PBUt (???)
PRT+ (PrintAid [0.9?] by James W. Walker)
PtrP (PrintPatrol [1.0] by Randy DeRuiter and John Champion)
QRef (QuickRef ext? [1.0] by Scott Bronson)
ReSp (File Tracker Controls cp [1.0] by Mark Aiken)
RQDC (DropCheck cp [???] by Ronald B. Queloz)
SCTR (FaxMonitor ext [1.6?], part of FAXcilitate by PSI)
SDIT (???)
SEcl (ScreenEclipse cp [1.0], part of ALSoft Power Utilities by
ALSoft, Inc.)
SFun (SF Windows [1.0] by Damon Cokenias)
SFwd (Open-wide cp [3.0?] by James W. Walker)
SLi2 (StuffIt SpaceSaver ext by Aladdin Systems, Inc. ?)
SNIT (Snitch ext [1.0] by Mitch Jones)
SPLO (SpigotVDIG ext [1.0] by SuperMac Technology)
ST20 (Snap-To cp [2.0?] by Trevden Sherzell)
STYH (StayHere! cp [2.0?] by Nobuhiro Miyatake)
TgrX (Xmas Lights cp [1.0] by Tiger Technologies)
Tmon (TMON Pro cp? [3.0] by ICOM Simulations)
UhOh (SpeedyFinder7 Extension ext [1.5.9h], part of SpeedyFinder7
by Victor Tan)
UlOn (UndelineEnabler ext [2.0?], part of FontPachin package by
Keisuke Hara)
See also FtCg selector.
View (StuffIt Viewer Engine [???] by Aladdin Systems Inc.)
gestaltViewerEngine
The gestalt selector is not installed until someone (StuffIt) invokes
the engine.
vmFn (RAM Doubler [1.0] by Connectix Corporation)
Seems to return a memory address, perhaps to a function to control
Virtual Memory?
NOTE: See 'Reports' chapter (RAMDoubler section) for more information.
WARE (???)
WREO (Replace Existing Options cp [???] by Jonathon Summers)
NOTE: The W is actually the option-w character (ASCII $B7).
Wttf (TeachText7.0 Font ext [???] by Jonathon Summers)
NOTE: The W is actually the option-w character (ASCII $B7).
*Men (OtherMenu ext [1.0] by James W. Walker)
Gestalt Manager Calls
=====================
All standard calls to the _Gestalt or _GestaltValueDispatch trap are listed
in this chapter.
Gestalt Manager Routines
------------------------
The CallSelectorFunctionProc and NewSelectorFunctionProc functions were
listed in the GestaltEqu.h file on E.T.O. #12 CD-ROM but not yet fully
documented.
FUNCTION Gestalt (selector: OSType; VAR response: LongInt): OSErr;
Available since System 6.0.4.
Trap Macro
_Gestalt ($A1AD)
Registers on entry D0: selector code
Registers on exit A0: response
D0: result code
Result codes
noErr 0 No error
gestaltUnknownErr -5550 Could not obtain the response
gestaltUndefSelectorErr -5551 Undefined selector
FUNCTION NewGestalt (selector: OSType; selectorfunction: ProcPtr): OSErr
Available since System 6.0.4.
Trap Macro
_NewGestalt ($A3AD)
Registers on entry A0: address of new selector function
D0: selector code
Registers on exit D0: result code
Result codes
noErr 0 No error
memFullErr -108 Ran out of memory
gestaltDupSelectorErr -5552 Selector already exists
gestaltLocationErr -5553 Function not in system heap
FUNCTION ReplaceGestalt (selector: OSType; selectorfunction: ProcPtr;
VAR oldGestaltFunction: ProcPtr): OSErr;
Available since System 6.0.4.
Trap Macro
_ReplaceGestalt ($A5AD)
Registers on entry A0: address of new selector function
D0: selector code
Registers on exit A0: address of old selector function
D0: result code
Result codes
noErr 0 No error
gestaltUndefSelectorErr -5551 Undefined selector
gestaltLocationErr -5553 Function not in system heap
#define CallSelectorFunctionProc(userRoutine, selector, response) \
(*userRoutine)(selector, response)
Trap Macro
??? (???)
Registers on entry ???
Registers on exit ???
Result codes
noErr 0 No error
??? ??? ???
#define NewSelectorFunctionProc(userRoutine) \
(SelectorFunctionUPP)(userRoutine)
Trap Macro
??? (???)
Registers on entry ???
Registers on exit ???
Result codes
noErr 0 No error
??? ??? ???
Undocumented Gestalt Manager Routines
-------------------------------------
FUNCTION? GestaltDispatch? (???):OSErr;?
Trap Macro
_GestaltDispatch ($A0AD)
Registers on entry ???
Registers on exit ???
Result codes
noErr 0 No error
???
NOTE:
Found in the MPW, THINK C and THINK Pascal Traps Interface file
on 'Bookmark CD 14'.
Available since System 6.0.4 but code will always return error -50
(paramErr). (Lawrence D'Oliveiro, Rene Ros)
FUNCTION? GetGestaltProcPtr? (selector?: OSType;
var selectorfunction: ProcPtr): OSErr;?
Trap Macro
_GetGestaltProcPtr ($A7AD)
Registers on entry D0: selector code?
Registers on exit ??: address of selector function
Result codes
noErr 0 No error
???
NOTE:
Found in the MPW Traps Interface file on 'Bookmark CD 14'.
Available since System 6.0.4 but code will always return error -50
(paramErr). (Lawrence D'Oliveiro, Rene Ros)
I (Rene Ros) have written Pascal code to do what this system call
probably is planned to do in the future.
Gestalt Value Routines
----------------------
Please note the GestaltValue routines can be invoked through a library,
but since System 7.5 the GestaltValue routines are also part of the OS.
The GestaltValue routines are stack based and don't use registers.
The GestaltValue library first checks to see if trap $ABF1 is implemented
(System 7.5 and later). If trap $ABF1 is implemented, all calls to the
library are routed to this trap, otherwise the library uses embedded code.
Several Apple System selectors use the GestaltValueDispatch A-trap to
install the response value starting with System 7.5.
WARNING:
The GestaltValue library distributed originally checks for the wrong trap
(_ThreadDispatch, $ABF2). Make sure your software doesn't crash when this
trap is installed by the Thread Manager extension. See the Related Software
section in the 'General Info' chapter for availability.
(Most info about the GestaltValue functions was provided by
Marco Piovanelli and Dave Radcliffe).
FUNCTION NewGestaltValue (selector: OSType; newValue: LongInt): OSErr;
Available as library and since System 7.5.
Trap Macro Selector
_GestaltValueDispatch ($ABF1) $0401
Result codes
noErr 0 No error
unimpErr -4 Unimplemented core routine
memFullErr -108 Ran out of memory
(and other memory errors)
gestaltDupSelectorErr -5552 Selector already exists
FUNCTION ReplaceGestaltValue (selector: OSType;
replacementValue: LongInt): OSErr;
Available as library and since System 7.5.
Trap Macro Selector
_GestaltValueDispatch ($ABF1) $0402
Result codes
noErr 0 No error
unimpErr -4 Unimplemented core routine
memFullErr -108 Ran out of memory
(and other memory errors)
gestaltUndefSelectorErr -5551 Undefined selector
FUNCTION DeleteGestaltValue (selector: OSType): OSErr;
Available as library and since System 7.5.
Trap Macro Selector
_GestaltValueDispatch ($ABF1) $0203
Result codes
noErr 0 No error
unimpErr -4 Unimplemented core routine
gestaltUndefSelectorErr -5551 Undefined selector
FUNCTION SetGestaltValue (selector: OSType; newValue: LongInt): OSErr;
Available since System 7.5?
Trap Macro Selector
_GestaltValueDispatch ($ABF1) $0404
Result codes
noErr 0 No error
???
Kilo-liners
===========
This chapter will list very small pieces of code which are related to
any Gestalt Routine.
Direct Gestalt Calls
--------------------
You can use the following code to call directly the Gestalt, NewGestalt and
ReplaceGestalt traps. In that way the (large) glue code will not be
installed by your compiler. (Contributions by Lawrence D'Oliveiro and
Marco Piovanelli).
FUNCTION Gestalt (selector: OSType; VAR response: LongInt): OSErr;
inline $225F, $201F, $A1AD, $2288, $3E80;
{ move.l (sp)+, a1 }
{ move.l (sp)+, d0 }
{ _Gestalt }
{ move.l a0, (a1) }
{ move.w d0, (sp) }
FUNCTION NewGestalt (selector: OSType;
gestaltFunction: ProcPtr): OSErr;
inline $205F, $201F, $A3AD, $3E80;
{ move.l (sp)+, a0 }
{ move.l (sp)+, d0 }
{ _NewGestalt }
{ move.w d0, (sp) }
FUNCTION ReplaceGestalt (selector: OSType;
gestaltFunction: ProcPtr;
VAR oldGestaltFunction: ProcPtr): OSErr;
inline $225F, $205F, $201F, $A5AD, $2288, $3E80;
{ move.l (sp)+, a1 }
{ move.l (sp)+, a0 }
{ move.l (sp)+, d0 }
{ _ReplaceGestalt }
{ move.l a0, (a1) }
{ move.w d0, (sp) }
Direct GestaltValue Calls
-------------------------
You can use the following code to call directly the NewGestaltValue,
ReplaceGestaltValue and DeleteGestaltValue when the _GestaltValueDispatch
trap is available. *AS04
FUNCTION NewGestaltValue(selector: OSType, newValue: LongInt): OSErr;
inline $303C, $0401, $ABF1;
FUNCTION ReplaceGestaltValue(selector: OSType,
replacementValue: LongInt): OSErr;
inline $303C, $0402, $ABF1;
FUNCTION DeleteGestaltValue(selector: OSType): OSErr;
inline $303C, $0203, $ABF1;
FUNCTION SetGestaltValue (selector: OSType; newValue: LongInt): OSErr;
inline $303C, $0404, $ABF1;
GestaltSelectorZero
-------------------
With all the selectors that are supposed to return non-zero values if
installed, it may be helpful to have an utility routine that returns a zero
value (instead of an error) if a selector isn't installed. It's short and
sweet because it makes a direct call to the _Gestalt trap; of course this
means you can't use it on systems earlier than 6.0.4.
(Contributed by Lawrence D'Oliveiro)
FUNCTION GestaltSelectorZero (Selector: OSType): LongInt;
{returns the value of the specified Gestalt selector,}
{or zero if unknown.}
inline $201F, $A1AD, $6702, $91C8, $2E88;
{ move.l (sp)+, d0 }
{ _Gestalt }
{ beq.s @2 }
{ sub.l a0, a0 }
{ @2: move.l a0, (sp) }
GestaltBitTest
--------------
The GestaltBitTest is a piece of inline assembly code which tests if the
specified bit is set in the value from the specified Gestalt selector
(false if the Gestalt call returns an error).
Example:
GestaltBitTest(gestaltAppleEventsAttr, gestaltAppleEventsPresent)
(Contributed by Lawrence D'Oliveiro)
FUNCTION GestaltBitTest(Selector: OSType; BitNr: Integer): Boolean;
inline
$321F, $201F, $A1AD, $6702, $91C8, $2008, $0300, $56C0, $4400, $1E80
{ move.w (sp)+, d1 }
{ move.l (sp)+, d0 }
{ _Gestalt }
{ beq.s @2 }
{ sub.l a0, a0 }
{ @2: move.l a0, d0 }
{ btst d1, d0 }
{ sne.b d0 }
{ neg.b d0 }
{ move.b d0, (sp) }
Call Gestalt Function Direct
----------------------------
Suppose you have just loaded an GDEF resource, or replaced one and keep the
original around and store a pointer to it somewhere private. Suppose next,
you want to call it to obtain a response without using yet another selector.
Thats what the following inline code is useful for. Just pass it the
usual selector and result parameters but also a pointer to the GDEF
(Lock it if it's a relocatable block).
FUNCTION CallGestaltDEF (selector: OSType;
var result: LongInt;
aRoutine: ProcPtr): OSErr;
inline $205F, $4E90;
{ move.l (sp)+, a0 }
{ jsr (a0) }
Reports
=======
When someone reports some findings involving several selectors and/or a
report is too long to include with the selector entry above, that report
is listed here. They should be as short as possible with the maximum
amount of information.
AppleShare File & Print Server selector codes
---------------------------------------------
The selectors are defined when the application has run. If it is still
running (or wasn't properly quit) the response is one. When the application
has properly quit the response is zero.
admn AppleShare Admin
asps AppleShare Print Server
hgfd AppleShare File Server
(these three are undocumented)
AppleTalk
---------
With the release of the System 7 Tuner product, AppleTalk will not be
loaded at startup, if prior to the previous shutdown AppleTalk was turned
off in the Chooser. Under this circumstance, the 'atkv' selector is not
available. If the 'atkv' selector is not available under System 7, this is
an indicator that AppleTalk cannot be turned on without doing so in the
Chooser and rebooting the system. *AT02
Copy protection using Gestalt
-----------------------------
In Develop 17 Brigham Stevens suggests to use Gestalt and FindFolder as a
way to implement copy protection in the most compatible way possible.
By determining several characteristics at installation from the Gestalt Mgr
and the DirID of the System Folder with FindFolder you can check for this
info later. When is has changed you can then ask for the serial number
or a password again. (Rene Ros)
Environs & SysEnvirons
----------------------
Using Macsbug it is very easy to determine that the SysEnvirons function
uses the Gestalt Manager to fill the fields of the system environment
record. So, when you install your own gestalt definitions by using the
ReplaceGestalt function this will also change the information returned
by SysEnvirons.
The older Environs function doesn't use the Gestalt Mgr and the code
seems to look only at two values in ROM. (Rene Ros)
Executor Mac-emulator
---------------------
Executor is a Macintosh Emulator for DOS machines, published by
Abacus Research and Development, Inc. (1993/1994). The Gestalt Manager is
also emulated and the version I have seen (on a 486DX) says it's a MacPlus
with a 68LC040 processor with MMU. The 'sysv' selector returns 0x607 but
it also lists a lot of selectors usually not installed by 6.0.7. Like
the 'edtn' and 'stdf' selectors. For those it then simply returns zero.
Strangely enough the 'tabl' selector is not installed, but this doesn't
confuse the Gestalt! application! (Rene Ros)
Gestalt Apple Event
-------------------
The scriptable Finder (with System 7 Pro and later) supports an Apple Event
kAEGestalt ('gstl', class KAEFinderSuite: 'fndr') to return Gestalt
information. On the local machine you can call Gestalt direct but remote
computers can now be examined also. If someone finds more detailed info
about this or has some working source samples, please let me know. Or
perhaps you want to write an application showing all Gestalt data and
even quering remote machines???
(Rene Ros; source: "Scripting the Finder from your Application" in
Develop 20)
GestaltValue
------------
The first time you call NewGestaltValue, the library installs two non-
relocatable blocks in the system heap and the 'gval' gestalt selector. One
of the blocks is filled with code: it's actually a gestalt definition that
implements GestaltValue's shared mechanism. The second block contains the
selectors and values GestaltValue manages. The response returned by the
'gval' selector is a pointer to the second non-relocatable block in the
system heap. (Marco Piovanelli)
Dave Radcliffe wrote on 23 March 1993 regarding some information, about the
GestalValue glue code, listed with version 1.4 of this list:
---------------------------------------------------------------------------
The information on the _GestaltValue trap ($ABF2) is correct based on the
glue, but because of a mistake on my part, the glue should be checking for
$ABF1. A new version of the glue is being distributed on the developer CD
next month. If developers need the fixed version sooner, or don't have
access to the CD, they can write to me at:
radcliff@apple.com
and I'll send them the fixed version.
---------------------------------------------------------------------------
Glue code
---------
These development/compiler software contain glue-code to handle a few
selectors even when the Gestalt Manager is not available.
THINK C (5.0 and later)
THINK Pascal (4.0 and later)
MPW (3.2 and later)
The following selectors can be handled by the glue-code, with all others
an error (gestaltUndefSelectorErr) will be returned.
gestaltAppleTalkVersion = 'atlk';
gestaltFPUType = 'fpu ';
gestaltKeyboardType = 'kbd ';
gestaltLogicalRAMSize = 'lram';
gestaltMachineType = 'mach';
gestaltMMUType = 'mmu ';
gestaltPhysicalRAMSize = 'ram ';
gestaltProcessorType = 'proc';
gestaltQuickdrawVersion = 'qd ';
gestaltSystemVersion = 'sysv';
gestaltVersion = 'vers';
Unless you are using direct calls, ofcourse.
(Source: THINK Reference 2.0)
PPC Libraries
-------------
Some of the Gestalt selector functions are smart enough to avoid crashing
when the user removed the library file from the Extensions folder without
restarting the machine. And some selector functions aren't that smart.
Safest is to preflight the first call you make into the library (for code
or data) or include a preflight in your startup.
(based on a posting by John Baxter in the comp.sys.mac.programmer Usenet
newsgroup on Internet.)
QuickTime
---------
If you install QuickTime under System 6, a major portion of the Alias
Manager and FSSpec support is also added. But, QT doesn't implement the
Gestalt selectors because the implementation is not complete. You must
check for either Alias Mgr or QuickTime. (Michael Hecht)
These are the limitations for the Alias Mgr installed by QuickTime:
- NewAlias will accept fromFile parameter, but it never creates a
relative alias.
- NewAliasMinimalFromPath and ResolveAliasFile aren't available.
- ResolveAlias and UpdateAlias ignore the fromFile parameter.
- MatchAlias may be called but the kARMMultVols, kARMSearchMore and
kARMSearchRelFirst flags aren't available and ignored if passed.
Also, a matchProc will never be called.
- Won't mount network volumes.
And these are the FSSpec calls available with System 6 when QuickTime is
installed:
- FSMakeFSSpec
- FSpOpenDF
- FSpOpenRF
- FSpCreate
- FSpDirCreate
- FSpDelete
- FSpGetFInfo
- FSpSetFInfo
- FSpSetFLock
- FSpRstLock
- FSpRename
- FSpCatMove
- FSpOpenResFile
- FSpCreateResFile
- FSpGetCatInfo
See for more information Technical Note M.QT.MovieTB.Q&As (QT 510) and
Develop 11 magazine on page 122.
RAM Doubler
-----------
It looks like RAM Doubler tricks the system in thinking there is virtual
memory but actually stores it somewhere else in memory instead to disk
which we are used to before RAM Doubler came around. It also looks like
this is done in corporation with Apple since a selector installed by
RAM Doubler is 'vmem' which is all lower-case and thus reserved by Apple.
In addition the response from this selector is always LongInt('RaM2') which
is the creator type of RAM Doubler. It seems this selector is used to
indicate which software is used to extend the capabilities of the Virtual
Memory Manager.
RAM Doubler also installs the selector 'vmFn' which seems to be a pointer
to a function to control RAMDoubler or to obtain information. It looks like
registers are used to pass parameters to and from that function. D0 perhaps
holds values 1 to 6 as input and perhaps A0 is used for the return value.
FUNCTION VMExtensionControl? (selector: Integer; VAR result: LongInt): OSErr;
Registers on entry D0: selector code
Registers on exit A0: result code
D0: error code
Result codes
noErr 0 No error
invalidSelector? 206 Invalid selector value?
???
Values used as selector:
const
kVMControlType? = 1; {type VM extension: RaM2}
kVMControlVersion? = 2; {version VM extension as BCD}
kVMControl??? = 3; {engine version as BCD?: $0313}
kVMControlMemSize? = 4; {unknown: Get/SetMemorySize?}
kVMControlMemSize? = 5; {unknown: Get/SetMemorySize?}
kVMControl??? = 6; {unknown}
kVMContolMaxFunctions? = MAXINT; {returns number of valid selectors}
{or any other value outside the}
{current 1-6 range}
Remember: all this is heresay!!!
Because of all this you can imagine RAM Doubler replaces/installs the
following System Software selectors (and I think it does):
lram, pgsz, ram , vm , vmbs. (Anonymous, Rene Ros)
General Info
============
The following sections provide general information needed or useful in
relation to the Gestalt Manager.
System Managers
---------------
Listed below is a table with the different software components of the
System Software with their related selectors. The selectors listed with
this table are included in the (known) 'Apple System Software' and
'Apple Additional Software' sections.
It provides a cross-reference to selectors and a starting point into other
documentation (Inside Macintosh).
With System Software versions before 6.0.4 (and Gestalt) you may need to
use TrapAvailable to determine the presence of certain system parts.
===========================================================================
System Software components and their selectors
===========================================================================
Manager Determine presence/features by using:
---------------------------------------------------------------------------
A/UX a/ux
ADB Mgr ???
Alias Mgr alis
Apple Event Mgr evnt
Apple Guide help, reno
Apple Remote Access arb , strm
AppleScript ascr, ascv
AppleTalk Mgr atkv, atlk
At Ease kids
CD-ROM Software aucd, hscd, iscd, kpcd, ufox
CloseView BSDa
Code Fragment Mgr cfrg
Collection Mgr cltn
Color Mgr ???
Color Picker Mgr cpkr
ColorSync Utilities cmta, cmtc
Communications Toolbox ctbm, ctbu, ctbv
see:
Communications Resource Mgr
Connection Mgr
Telephone Mgr
Terminal Mgr
Communications Resource Mgr crm
Component Mgr cpnt
Compression Mgr icmp
Connection Mgr conn
Control Mgr no need to check
Control Strip sdev, csvr
Cursor Utilities qd >= gestalt32BitQD
Data Access Mgr dbac
Debugger (MacsBug) See PT 535 - MacsBug Q&As TechNote
Deferred Task Mgr ???
Desk Manager no need to check
Desktop Mgr PBHGetVolParms fills GetVolParmsInfoBuffer.
Test for the bHasDesktopMgr bit (12) of the
vMAttrib field for all volumes.
Device Mgr no need to check
Dialog Mgr ditl, TrapAvailable(_DialogMgrDispatch)
Dictionary Mgr dict
Digital Signature Toolbox dsig
Disk Initialization Mgr fs
Display Mgr dplv, dply
Docking Mgr ???
Drag Manager drag
Easy Access eajt, easy
Edition Mgr edtn
File Mgr ???, fs
File System Mgr fs , fsm
File Transfer Mgr fxfr
Finder fndr
FindFolder function fold
Flagship flag
Font Mgr font
Gestalt Mgr gval, tabl, vers, TrapAvailable(_Gestalt),
TrapAvailable(_GestaltValueDispatch)
Help Mgr help
Icon Utilities icon, TrapAvailable(_IconDispatch)
LAP Mgr atlk >= 53
List Mgr no need to check ?
MacsBug see: Debugger (MacsBug)
MacTCP mtcp
Memory Mgr addr, cash, lram, os
Memory Management Utilities addr, TrapAvailable(_HWPriv) ?
Menu Mgr no need to check
Message Mgr mess
MIDI Mgr ???
Mixed Mode Mgr mixd
Notification Mgr nmgr, TrapAvailable(_NMInstall) with System
before 6.0.4 ?
OCE Toolbox ocet, oceu
Offscreen Graphics Worlds (qd >=gestalt32BitQD) OR (sysv >= $0700) ?
OS Utilities depends on call
OSA Use Component Mgr to check for Generic
Scripting Component
PC Exchange pcxg
Package Mgr no need to check
Picture Utilities sysv >= $0700
Popup CDEF pop!
Power Mgr powr
PowerTalk see:
Digital Signature Toolbox,
OCE Toolbox,
S&F Server,
SDP Find,
SDP Prompt,
SDP Standard Directory,
SMP Mailer,
SMP Sendletter
PPC Toolbox ppc
Process Mgr os
QuickDraw qd , qdrw
QuickDraw GX qdgx
QuickDraw GX Graphics gfxa, grfx
QuickDraw GX Printing Mgr pmgr
QuickTime qtim, qtrs
Realtime Mgr rtmr
Resource Mgr rsrc
S&F Server (PowerTalk) see OCE Toolbox
SANE (OmegaSANE) ???
Scrap Mgr scra
Script Mgr scr#, scri, TrapAvailable(_ScriptUtil)
SCSI Mgr scsi
SDP Find (PowerTalk) dfnd
SDP Prompt (PowerTalk) prpv
SDP Standard Directory (PowerTalk)
sdvr
Segment Mgr no need to check
Server control calls TrapAvailable(ServerDispatch) [$A094]
Shared Library Mgr ??? (aslm?)
Shutdown Mgr TrapAvailable(_Shutdown) ?
Slot Mgr nubs, slot, slt1, sltc
SMP Mailer (PowerTalk) malr
SMP Sendletter (PowerTalk) spsl
Sound Mgr snd , snhw, TrapAvailable(_SndDispatch)
Sound Input Mgr snd
Speech Mgr ttsc
Speech Recognition srta, srtb
Standard File Package stdf
Standard NBP nlup
System Toolbox (hardware)
coprocessor fpu
disks intd
keyboard kbd
machine mach
misc. ICs hdwr, mmu , rbv , sccr, sccw, ser ,
via1, via2
processor cput, proc, sysa
RAM ICs ram , prty
ROM ICs rom , romv
trackpad tpad
System Toolbox (software) lmem, micn, misc, os , ostt, osyv,
sysv, tbtt, xttt
Telephone Mgr tele
Terminal Mgr term
TextEdit te , teat
Text Services Mgr tsma, tsmv
Text Services Manager for TextEdit
tmTE, tmTV
Text Utilities depends on call
Thread Mgr thds
Time Mgr tmgr
Toolbox Utilities depends on call
Translation Mgr xlat
TV & Video mtv2, tv
Vertical Retrace Mgr no need to check
Video see: TV & Video
Virtual Memory Mgr pgsz, vm
Windows Mgr no need to check
Workstation Management Agent wma.
WorldScript scri >= $0710, ws 1
XTND Technology XTND
---------------------------------------------------------------------------
Gestalt Problems
----------------
This section lists all known problems related to the Gestalt selectors.
Each problem is also listed with each of the entries in the selector
chapters above. The table below provides an overview.
===========================================================================
Overview Gestalt selector problems
===========================================================================
Software Code Problem Status
---------------------------------------------------------------------------
Apple Photo Access ext kpcd always returns $FFFFFFF7 R unclear
AppleScript ext ascv different formats version R problem?
AppleTalk atkv majorRev of version in hex problem?
Color Picker ext cpkr incorrect return values? problem?
Control Strip cp sdev two symbolic names defined problem?
Easy Access cp easy incorrect return values C unknown
Icon Utilities code icon not installed C SYS 712?
Link Tool Mgr 2.0 ext ltma incorrect version value? R problem?
PowerTalk ext/Control Strip 1.0 cp
sdvr same selector for both? C CS 1.1?>
Shared Library Mgr ext aslm incorrect version value? problem?
Speech Recognition ext srta, srtb
installed even if no SR possible R unclear
System (enablers) *ALL* Gestalt Mgr with System 7.1.2 C SYS 7.5>
*ALL* Minimal System 7 may lie about
managers present C SYS 7.5>
alis QT part. installs but no selector C ok
cash never installed? unclear
conn not installed with System 6 problem?
cput incorrect values 68K header file C fixed
system 7.5? returns incorrect
values for 68K C unknown
ctbv PM returned 1.1 while ROM has 1.0 C SU 3.0 >
fs QT part. installs but no selector C ok
intd bit 1 (disk spon up) not set R problem?
kbd Adjustable Keyboard incorrect C SU 2.0 >
not installed on PM7100 (7.1.2) unclear
qdrw HasColor set on B/W machines (7.0)C unknown
rsrc PartialRsrcs not set with 7.0 C 7.1 >
sltc No information on IIsi slot C never?
sysv KanjiTalk 6.0.7 incorrect return value
C sysvINIT
System 6.0.8 returns $0607 never
System 7.1.2/PPC card returns 0710 unclear
System/Apple Event ext evnt constants overlap header files C fixed
---------------------------------------------------------------------------
R = unconfirmed but known to be reported to Apple
C = confirmed
fixed = problem is fixed, see selector entry for more information
ok = meant to work this way...
unclear = unclear if it will ever be fixed
unknown = unknown when it will be fixed
History
-------
This section contains a short overview about the history of the Gestalt
Manager and its predecessors.
ENVIRONS
PROCEDURE Environs (VAR rom,machine: INTEGER);
With the introduction of the Macintosh the system routine 'Environs' was
introduced. It allowed to obtain two pieces of information: the ROM version
and a value to indicate the machinetype. This "ROM oriented" way soon
appeared to be insufficient when the range of Macintosh hardware and
software became more diverse.
SYSENVIRONS
FUNCTION SysEnvirons (versionRequested: INTEGER;
VAR theWorld: SysEnvRec): OSErr;
With System 4.1 a new system routine was introduced which allowed the
programmer to obtain more information about the current configuration.
Upon completion SysEnvirons filled the SysEnvRec with the information.
This was however an "all-or-nothing" situation, it was not possible to
obtain just one piece of information.
To allow for larger system environment records with more information one
needed to specify the version number of the system environment record. The
last version, introduced with System 6, was version 2 which had nine fields.
GESTALT
FUNCTION Gestalt (code: LONGINT; VAR feature: LONGINT): OSErr;
You may wonder how one can be so stupid to list the Gestalt routine wrong...
However, this is how the Gestalt routine was presented to developers in
the Preliminairy Developer Note regarding System 7 in 1989. It was
originally written in 1988.
There was no selector of type OSType as we known it today. Instead a list
of numerical constants was used, like:
zVersion = $1; { Gestalt Version }
zMachType = $100; { machine type }
zSystemVers = $101; { system file version }
and nine others.
But the principle used with todays Gestalt routine was there: request one
specific piece of information and you'll get it. Nothing more and nothing
less. Back then it wasn't the Gestalt Manager since there was only one
routine. Both the NewGestalt and the ReplaceGestalt did not exist.
In June 1992 (released in February 1993?) three new functions were added
to the Gestalt Manager: NewGestaltValue, ReplaceGestaltValue and
DeleteGestaltValue
Abbreviations
-------------
A/UX - Apple UNIX
ADB - Apple Desktop Bus
AMU - Apple Memory Unit?
ARTA - Apple Real Time Architecture
AS - AppleShare
ASC - Apple Sound Chip
ASCII - American Standard Code for Information Interchange
ASIC - Application Specific Integrated Circuit
AURP - AppleTalk Update-based Routing Protocol
AWAC - Audio Waveform Amplifier and Converter
Caboose - processor that manages the keyswitch, system power,
the real-time clock, and parameter RAM
CDEF - Control DEFinition (code resource)
CISC - Complex Instruction Set Computer (compare with RISC)
CLUT/DAC - color look-up table and digital-to-analog converter IC
Combo - chip, combines the functions of the SCC and the SCSI controller
CPU - Central Processing Unit
DAFB - Direct Access Frame Buffer
DAV - Digital Audio Video (connector)
DDC - Display Driver Chip
DFAC - Digitally Filtered Audio Chip
DITL - Dialog ITems List (resource)
DLL - Dynamically Linkable Library
DMA - Direct Memory Access
DN - Developer Note
DOS - Disk Operating System (to run a computer???)
DRAM - Dynamic RAM
DSP - Digital Signal Processor
EASC - Enhanced Apple Sound Chip
FAT - File Allocation Table?
FMC - Fitch Memory Controller
FPU - Floating Point Unit
GDEF - Gestalt DEFinition (code resource)
GPi - General Purpose Input
IM - Inside Macintosh
IOP - Input/Output Processor
IWM - Integrated Woz Machine
JDB - Junction Data Bus
JMC - Jaws Memory Controller
MacOS - Macintosh Operating System
MCU - Memory Control Unit
MAE - Macintosh Application Environment (Mac system on UNIX RISC)
MEO - Macintosh Easy Open
MMU - Memory Management Unit
NBP - Name Binding Protocol
OCE - Open Colloboration Environment
OMC - Orwell Memory Controller
OS - Operating System
OSA - Open Scripting Architecture:
OSA is the Open Scripting Architecture. It is the layer upon
which all scripting languages sit and the method by which
applications call scripts. (Jon Pugh)
OSL - Object Support Library
OSS - Operating System Support chip
PB - PowerBook
PCI - Peripheral Component Interconnect bus
PDS - Processor-Direct Slot
PGC - Parity Generator Chip
PMMU - Paged Memory Management Unit
PSRAM - Pseudo Static RAM
PPC - Process-to-Process Communication, also:
PowerPC
ProDOS - Professional Disk Operating System? (OS for the Apple //)
PWM - Pulse-Width Modulated?
QD - QuickDraw
RAM - Random Access Memory (see DRAM & SRAM, compare ROM)
RAMDAC - Random Access Memory, Digital/Analog Converter
RBV - RAM-Based Video
RISC - Reduced Instruction Set Computer (compare with CISC)
ROM - Read Only Memory
RSB - Ram Based Sound
RTC chip - Real-Time Clock chip
RPU - Random Parity Unit
SCC - Serial Communications Controller
SCSI - Small Computer System Interface
SDP - Standard Directory Package
SIMM - Single In-line Memory Module
SMP - Standard Mailer Package
Sonic - chip for built-in Ethernet
Sporty - a custom IC that provides sound output amplification functions
SRAM - Static RAM
SWIM - Super-Wozniak Integrated Machine OR
Sanders-Wozniak Integrated Machine
TE - TextEdit (32Kb limited built-in text-engine)
TN - Technical Note
TTS - Text-To-Speech
VDAC - Video Digital to Analog Converter
VIA - Versatile Interface Adapter
VM - Virtual Memory
VRAM - Video RAM
YANCC - Yet Another NuBus Controller Chip
FA - File Access
RA - Remote Access
Sources
-------
A Apple Computer, Inc.
AD Documentation & Magazines
AD01 MacTCP Programmer's Guide
AD02 AppleTalk Remote Access API External Reference Specification
AD03 Macintosh Easy Open programmer's docs
AD04 Thread Manager 1.1 and 2.0 documentation
AD05 Drag Manager Programmer's Guide
AD06 Sound Manager Tech Note on BookMark CD 16
AD07 Develop 17, p. 123
AD08 MAE Compatibility Hints
AD09 Color Matching documentation on ETO 14 and BookMark 18
AD10 OS Compatability doc on WWDC 1994 CD
AD11 IM PPC System Software
AD12 IM OS Utilities
AD13 Develop 19, p. 105
AD14 File System Manager Guide, Sep. 1994
AD15 Apple Remote Access API, part of Mac OS SDK
AD16 Apple Guide Authoring Kit
AD17 IM Advanced Color Imaging (Draft)
AS Software, source code & header files
AS01 QuickTime ImageCompression source files
AS02 CommToolbox 1.1 source files
AS03 MPW Interface files on Bookmark CD 14
AS04 GestaltEqu header file on ETO 12
AS05 GestaltEqu header file on ETO 13
AS06 GestaltEqu header file on BookMark CD 17
AS07 TSMTE header file on BookMark CD 17
AS08 AppleScript header file on ETO 14
AS09 Drag header file on ETO 14
AS10 XTNDInterface header file on ETO 14
AS11 ControlStrip header file on BookMark CD 19
AS12 AppleGuide header file on BookMark CD 18
AS13 Macintosh on RISC SDK (also on CodeWarrior CD)
AS14 Gestalt header file as part of Universal Interfaces 2.0a1
AT Technical Notes
AT01 TN M.OV.GestaltSysenvirons (OV 16), May 1987
AT02 TN M.NW.AppleTalk2 (NW 13), Feb.1992
AT03 TN M.DV.CD-ROMDriver (DV 22), May 1993
AT04 TN M.HW.SCSI.Q&As (HW 540), Oct. 1990
AT05 TN M.TX.TextServicesMgr.Q&As (TE 531), May 1993
AT06 TN OS 05 - System Update 3.0, July 1993/Rev. May 1994
AT07 TN M.DV.CuriousSCSI, May 1994
S Symantec Corp.
S01 THINK Pascal 4.0 interface files
S02 THINK C GestaltGlue source files
S03 THINK Reference 1.0 and 2.0
M Miscellaneous sources
M01 Gestalt DA 0.4 1990 (Carl C.Hewitt)
M02 Gestalt dcmd 1.0 (Eric Simenel, Apple Computer France)
M03 sysvINIT source files (Apple Computer Japan, Inc.)
M04 TMON Professional Reference Manual, p.192 (ICOM Simulations)
M05 AfterDarkGestalt.h file (Berkeley Systems, Inc.)
M06 SoftwareFPU Programmer Info (John Neil & Associates)
Related Software
----------------
Listed below is software which may be of interest to developers because
they are a tool providing information from the Gestalt Manager, include
Gestalt-related source code or provide additional capabilities to the
Gestalt Manager. Included is also were you can find or get a copy.
All software available on sumex-aim.stanford.edu is also available on the
INFO-MAC CD-ROM by Pacific HiTech, Inc. The INTERNET FTP-sites mentioned
may have one or more mirror sites as well. Locations on CompuServe are not
included.
Some software listed below can also be found at the mail-archive server,
see the section 'Availability' in the 'About this list' chapter for more
information.
5thColumn, GestaltProbe (Kamran Golriz, Apple Computer Inc.)
Extension with MPW Tools to query other mac on a network, one of
the tools is GestaltProbe.
CD-ROM: Bookmark CD (Apple Developer Group)
:Tools & Applications:Network & Communications:5th Column:
AEgestalt (Kent Sandvik, Apple Computer Inc.)
Uses Apple Events to get Gestalt response from remote machine,
includes C-source. (Requires color?? Doesn't run on MacPlus)
FTP: ftp.apple.com [130.43.2.3]
ftp://ftp.apple.com/dts/mac/sc/snippets/platforms.tools/
aegestalt-1-0.hqx
CD-ROM: Bookmark CD (Apple Developer Group)
:Documentation & Samples:Sample Code:Snippets:
Platforms & Tools:AEGestalt 1.0:
AfterDark Gestalt header file (Berkeley Systems, Inc.)
Header file for using the gestalt selectors used by many screensavers.
EMAIL: gestalt-selectors-list-request@bio.vu.nl
archive get src/AfterDarkGestalt.h
brklysystm@aol.com (Berkeley Systems Mac Tech Support)
ask them nicely to email the AfterDarkGestalt.h file.
CheckGestaltFor (Neil Shulman)
Hypercard external to access the Gestalt Manager.
FTP: sumex-aim.stanford.edu [36.44.0.6]
ftp://sumex-aim.stanford.edu/info-mac/card/
check-gestalt-for-xcmd.hqx
EMAIL: gestalt-selectors-list-request@bio.vu.nl
archive get software/check-gestalt-for-xcmd.hqx
DisplayGestalt (Craig Marciniak)
Small application displays configuration using Gestalt Mgr, includes
C-source.
FTP: mac.archive.umich.edu [141.211.120.11]
ftp://mac.archive.umich.edu/development/libraries/
displaygestalt.cpt.hqx
EMAIL: gestalt-selectors-list-request@bio.vu.nl
archive get software/displaygestalt.cpt.hqx
Feature Teller 1.0 (Jennifer Minge, Apple Computer Inc.)
Sample application quering Gestalt Mgr (or SysEnvirons if not
available). Includes THINK Pascal source.
CD-ROM: Bookmark CD (Apple Developer Group)
:Tools & Applications:OS/Toolbox:Feature Teller 1.0:
Gestalt! 3.0 (Roland Mansson)
Displays responses from installed selectors.
FTP: ftp.lu.se [130.235.132.90]
ftp://ftp.lu.se/pub/mac/util/gestalt300.cpt.hqx
sumex-aim.stanford.edu [36.44.0.6]
ftp://sumex-aim.stanford.edu/info-mac/cfg/gestalt-300.hqx
EMAIL: gestalt-selectors-list-request@bio.vu.nl
archive get software/gestalt-30-app.cpt.hqx
GestaltDA 0.4 (Carl C. Hewitt, Apple Computer Inc.)
Displays responses from installed selectors.
CD-ROM: Bookmark CD (Apple Developer Group)
:Tools & Applications:OS/Toolbox:GestaltDA 0.4
Gestalt DCMD (Apple Computer Inc.)
This dcmd (debugger command for MacsBug) allows you to "use" Gestalt
when you're in MacsBug.
FTP: ftp.apple.com [130.43.2.3]
ftp://ftp.apple.com/dts/mac/sc/snippets/platforms.tools/
gestalt-dcmd.hqx
CD-ROM: Bookmark CD (Apple Developer Group)
:Documentation & Samples:Sample Code:Snippets:
Platforms & Tools:Gestalt dcmd:
Gestalt Environment 7
Application to list a number of installed selectors.
EMAIL: gestalt-selectors-list-request@bio.vu.nl
archive get software/ge7.hqx
GestaltExt (Andre Cavegn)
External for 4TH Dimension Relational Database application from
ACI/ACI US.
FTP: sumex-aim.stanford.edu [171.65.4.3]
ftp://sumex-aim.stanford.edu/info-mac/dev/a4d/ext/
gestalt-ext.hqx
EMAIL: gestalt-selectors-list-request@bio.vu.nl
archive get software/gestalt-ext.hqx
GestaltGlue (???)
Glue code and interface in C and assembly.
CD-ROM: Bookmark CD (Apple Developer Group)
:Documentation & Samples:Sample Code:System 7.0 samples:
DTS.Utilities:Gestalt*
Gestalt Pro 1.1.2 (Rene G.A. Ros)
External for 4TH Dimension Relational Database application from
ACI/ACI US.
FTP: sumex-aim.stanford.edu [171.65.4.3]
ftp://sumex-aim.stanford.edu/info-mac/dev/a4d/ext/
gestalt-pro-112.hqx
EMAIL: gestalt-selectors-list-request@bio.vu.nl
archive get software/gestalt-pro-112-.sit.hqx
GestaltTalk (Brigham Stevens, Apple Computer DTS)
Code part of Notification Hacks to show how you can communicate
between an application and an INIT using the Gestalt Mgr. Includes
C-source files.
CD-ROM: Bookmark CD (Apple Developer Group)
:Documentation & Samples:Sample Code:Snippets:
Toolbox:Notification Hacks:GestaltTalk:
GestaltValue (anonymous, Apple Computer Inc.)
Library and interface for use of the GestaltValue functions.
FTP: sumex-aim.stanford.edu [171.65.4.3]
ftp://sumex-aim.stanford.edu/info-mac/dev/
gestalt-value-lib.hqx
EMAIL: Dave Radcliffe, Mac DTS (radcliff@apple.com)
gestalt-selectors-list-request@bio.vu.nl
archive get software/gestaltvalue-lib.hqx
CD-ROM: Bookmark CD (Apple Developer Group)
:Tools & Applications:OS/Toolbox:GestaltValue:
GestaltWatch ext 1.0a1 (Scott Bronson)
Tracks all calls to NewGestalt and ReplaceGestalt traps.
Not yet available.
Gestalt XFCN 3.2.1 (Jeff Iverson)
Hypercard XFCN to query the Gestalt Manager.
FTP: sumex-aim.stanford.edu [171.65.4.3]
ftp://sumex-aim.stanford.edu/info-mac/card/gestalt-321.hqx
EMAIL: gestalt-selectors-list-request@bio.vu.nl
archive get software/gestalt-321-xfcn.hqx
Gestaltzeigen appl 1.0 (B. Kevin Hardman)
Displays responses from installed selectors and any bit
interpretation. Not yet available.
Get Gestalt (AppleScript addition) 1.2 by Mark Alldritt
Provides access to the Gestalt Manager for AppleScript scripts.
FTP: gaea.kgs.ukans.edu [129.237.140.40]
ftp://gaea.kgs.ukans.edu/applescript/osaxen/
ScriptTools1.3.sit.hqx ?
EMAIL: gestalt-selectors-list-request@bio.vu.nl
archive get software/scripttools-13.sit.hqx
Go Gestalt appl 1.5 (Paul Reznick)
Displays information obtained thru the Gestalt Mgr.
EMAIL: gestalt-selectors-list-request@bio.vu.nl
archive get software/go-gestalt-15.sit.hqx
INITGestalt (Jeremy Roussak & Rene Ros)
Latest version of the INITGestalt proposal. Tries to define a
standardized record to use with the Gestalt Mgr.
EMAIL: gestalt-selectors-list-request@bio.vu.nl
archive get INITGestalt.txt
Informant XFCN 1.0 (Jeff Iverson)
Hypercard XFCN to query the Gestalt Manager.
FTP: sumex-aim.stanford.edu [171.65.4.3]
ftp://sumex-aim.stanford.edu/info-mac/card/
information-10-xfcn-demo.hqx
EMAIL: gestalt-selectors-list-request@bio.vu.nl
archive get software/information-10-xfcn-demo.hqx
Mac Identifier 1.0 (Flux Software, written by Maurice Volaski)
Fixes the problem of System 7.5 which doesn't display the real
machine type name anymore.
FTP: sumex-aim.stanford.edu [171.65.4.3]
ftp://sumex-aim.stanford.edu/info-mac/gui/
mac-identifier-111.hqx
EMAIL: gestalt-selectors-list-request@bio.vu.nl
archive get software/mac-identifier-111.hqx
SAVR Gestalt (Thomas Reed)
Source code (C) demonstrating how to install the Screen saver
Gestalt selector 'SAVR'.
EMAIL: gestalt-selectors-list-request@bio.vu.nl
archive get src/gestalt-savr.txt
Tattle-Tech appl (Decision Makers Software, Inc.)
Uses Gestalt manager extensively to display all know information.
FTP: sumex-aim.stanford.edu [171.65.4.3]
ftp://sumex-aim.stanford.edu/info-mac/cfg/
tattle-tech*.hqx
EMAIL: gestalt-selectors-list-request@bio.vu.nl
archive get software/tattle-tech*.hqx
TechTool appl 1.0.4 (Micromat Computer Systems)
Application to reset PRAM, rebuild DTDB and show Gestalt info.
EMAIL: gestalt-selectors-list-request@bio.vu.nl
archive get software/tech-tool-104.hqx
Technical Notes: (Apple Computer Inc.)
M.OV.GestaltSysenvirons (Gestalt & SysEnvirons)
M.NW.AppleTalk2 (AppleTalk The Rest Of the Story)
M.OS.GestaltMgr.Q&As (Gestalt Manager Questions and Answers)
FTP: ftp.apple.com [130.43.2.3]
ftp://ftp.apple.com/dts/mac/tn/overview.ov/
ov-16-gestalt-and-sysenvir.hqx
ftp://ftp.apple.com/dts/mac/tn/networking.nw/appletalk2.hqx
ftp://ftp.apple.com/dts/mac/tn/operating.system.os/
os-505-gestalt-mgr-qas.hqx
CD-ROM: Bookmark CD (Apple Developer Group)
:Documentation & Samples:Mac Tech Notes:
Overview (OV):OV 16 - Gestalt & SysEnvirons
Networking (NW):NW 13 - AppleTalk The Rest Of
Operating System (OS):OS 505 - Gestalt Mgr Q&As
Test Gestalt (Apple Computer Inc.)
Examples to test for QuickDraw version and Virtual Memory status,
includes C-source.
FTP: ftp.apple.com [130.43.2.3]
ftp://ftp.apple.com/dts/mac/sc/snippets/toolbox/
testgestalt.hqx
CD-ROM: Bookmark CD (Apple Developer Group)
:Technical Documentation:Sample Code:Snippets:
Toolbox:TestGestalt:
Userfunction Gestalt code (Rich Kubota, Apple Computer Inc.)
Source code in C for Apple Installer Script writers.
FTP: ftp.apple.com [130.43.2.3]
ftp://ftp.apple.com/dts/mac/sc/snippets/platforms.tools/
userfunction-gestalt.hqx
CD-ROM: Bookmark CD (Apple Developer Group)
:Technical Documentation:Sample Code:Snippets:
Platforms & Tools:UserFunction Gestalt:
WhoAmI? (Jonathan Jacobs)
Installer to add full Machine Name STR# resource to System 7.5.
FTP: sumex-aim.stanford.edu [36.44.0.6]
ftp://sumex-aim.stanford.edu/info-mac/cfg/who-am-i-099.hqx
EMAIL: gestalt-selectors-list-request@bio.vu.nl
archive get software/who-am-i-099.hqx
URL
---
Below are all locations of files listed in the Universal Resource Locators
(URL) format, except those which can not be described by an URL. They are
listed here again, but now without linebreaks. This is the only part of the
GSL exceeding the 80 characters per line limit.
ftp://ftp.apple.com/dts/mac/sc/snippets/platforms.tools/aegestalt-1-0.hqx
ftp://ftp.apple.com/dts/mac/sc/snippets/platforms.tools/gestalt-dcmd.hqx
ftp://ftp.apple.com/dts/mac/sc/snippets/platforms.tools/userfunction-gestalt.hqx
ftp://ftp.apple.com/dts/mac/sc/snippets/toolbox/testgestalt.hqx
ftp://ftp.apple.com/dts/mac/tn/networking.nw/appletalk2.hqx
ftp://ftp.apple.com/dts/mac/tn/operating.system.os/os-505-gestalt-mgr-qas.hqx
ftp://ftp.apple.com/dts/mac/tn/overview.ov/ov-16-gestalt-and-sysenvir.hqx
ftp://ftp.lu.se/pub/mac/util/gestalt300.cpt.hqx
ftp://gaea.kgs.ukans.edu/applescript/osaxen/ScriptTools1.3.sit.hqx ?
ftp://mac.archive.umich.edu/development/libraries/displaygestalt.cpt.hqx
ftp://merit.edu/pub/ppp/mac/
ftp://sumex-aim.stanford.edu/info-mac/card/check-gestalt-for-xcmd.hqx
ftp://sumex-aim.stanford.edu/info-mac/card/gestalt-321.hqx
ftp://sumex-aim.stanford.edu/info-mac/card/information-10-xfcn-demo.hqx
ftp://sumex-aim.stanford.edu/info-mac/cfg/gestalt-300.hqx
ftp://sumex-aim.stanford.edu/info-mac/cfg/tattle-tech*.hqx
ftp://sumex-aim.stanford.edu/info-mac/cfg/who-am-i-099.hqx
ftp://sumex-aim.stanford.edu/info-mac/dev/a4d/ext/gestalt-ext.hqx
ftp://sumex-aim.stanford.edu/info-mac/dev/a4d/ext/gestalt-pro-112.hqx
ftp://sumex-aim.stanford.edu/info-mac/dev/gestalt-value-lib.hqx
ftp://sumex-aim.stanford.edu/info-mac/dev/info/gestalt-selectors-XX.hqx
ftp://sumex-aim.stanford.edu/info-mac/gui/mac-identifier-111.hqx
http://bambam.cchem.berkeley.edu/~schrier/mhz.html
http://www.astro.nwu.edu/lentz/mac/faqs/source/gestalt.html
Definitions and Format
======================
This chapter explains where the word 'Gestalt' comes from, a few things
are defined and it explains how each selector code entry looks like.
Use in Language
---------------
WEBSTER'S DICTIONARY (?)
ge.stalt \g<e>-'s(h)t<a:>lt, -'s(h)t<o.>lt\ n, pl ge.stalt.en
\-<\e>n\ or gestalts (1922)
[G, lit., shape, form]
:a structure, configuration, or pattern of physical, biological, or
psychological phenomena so integrated as to constitute a functional unit
with properties not derivable by summation of its parts.
GERMAN-DUTCH DICTIONARY
Gestalt w [-en]
stature, figure, form; Ritter von der Traurigen -, knight of the
sorrowful figure.
Definitions
-----------
APPLE SOFTWARE
This category includes all selectors installed by software published by
Apple Computer, Inc.
Inside Macintosh says this about them:
"Apple reserves for its own use all four-character sequences
consisting solely of lowercase letters and non alphabetic ASCII
characters".
It includes all selectors of the next two categories:
APPLE SYSTEM SOFTWARE
This category includes all selectors installed by System Software from
Apple Computer, Inc.
APPLE ADDITIONAL SOFTWARE
These are selectors installed by additional, non-system, software from
Apple Computer, Inc.
THIRD PARTIES SOFTWARE
These are selectors installed by software from parties other than Apple
Computer, Inc.
Inside Macintosh says about these:
"If you have registered a creator string with Apple, you are
strongly encouraged to use that sequence as your selector code".
This type of selectors is included in this list with the motto "If you
don't know they are there, you can't do anything with them".
Especially the Third Party selectors may change with every new release and
are therefore only listed in the 'known selectors' part when the author has
described the structure in the documentation or by email to me. These
selectors don't have a high priority but when possible I want to know at
least which software installs it to exclude it as a possible
"Apple selector".
Some people at Apple also differentiate between commercial developers and
others, as being "third" and "fourth" parties respectively. But with this
list this is not the case.
Format Selector Entry
---------------------
Format used to display information about each selector:
selector_code (Software_name & type [since_version], by company/author)
constant_name
description
const
declaration; {remark *ref.number_to_source}
NOTE and/or WARNING:
Where the type is one of:
app application (APPL)
cp control panel (cdev)
ext extension (INIT/appe/RDEV etc.)
Example:
COLA (Sugarwater ext [1.0] by John Sculley)
gestaltSugarwaterVersion
Returns version of Sugarwater as NumVersion.
const
gestaltSugarwaterVersion = 'COLA'; *AB01
WARNING: This example is fictitious.
NOTE:
Sugarwater? See the book 'West of Eden, The End of Innocence at
Apple' by Frank Rose.
Most selectors are listed as four characters, if there are only two or
three characters displayed the remainder are spaces (or it's a typo!).
Diacritical characters are shown in the most logical normal character and
at the end of the entry a note is included about which key-combination to
press with a normal International system and US keyboard layout to get the
required diacritical character and also listed is its ASCII code.
When 'INF' is at the end of the first line it means it is an informational
selector, all others are environmental selectors.
The source reference number may also be used in other places than indicated
above. It then applies to other parts of the entry or to the whole entry.
A single question mark indicates an uncertainty regarding the information
in front of the question mark. Three question marks indicate complete
absence of the information.
Some symbolic names may not originate from official publications.
Symbolic Names Suffixes
-----------------------
The last characters of the symbolic names form a suffix which indicates
the type of the returned value. Below is a table which lists the different
types of suffix and their meaning.
===========================================================================
Symbolic Names Suffixes
===========================================================================
Suffix Meaning
---------------------------------------------------------------------------
Addr Value is an address, i.e. to the base address of
a memory-mapped device or to a function in
memory.
Attr Value is a range of 32 bits (0 is the least
significant bit), must compare with list of
constants and use BitTst or similair. Sometimes
it is a bitmask, then use BitAnd.
Count Value is a number indicating how many of the
indicated type exist.
Icon Value is the resource ID of an icon.
Size Value is a size, usually in bytes.
Table Value is the base address of a table.
Type Value is an index to map to a version or name.
Version Value is a version number. See the section
'Format Version Numbers' below, for a list of
different formats of version numbers.
<none> If there is no suffix like the ones above, the
presence of the selector only implies the
software which installed the selector is present.
The returned value is then private to the
installee.
---------------------------------------------------------------------------
Format Version Numbers
----------------------
BCD (Binary Coded Decimal)
$0x0402 means 4.0.2.
INTEGER
The decimal representation of the returned value in the low-byte is
the version.
Double BCD (my own fantasy name..., RR)
$00010108 means 1.1.8.
NumVersion
The format of the LongInt response can be coerced into type NumVersion,
which is the same format as used for the 'vers' resource type.
type
NumVersion = packed record
case INTEGER of
0: (majorRev: SignedByte; {1st part of version number in BCD}
minorRev: 0..9; {2nd part is 1 nibble in BCD}
bugFixRev: 0..9; {3rd part is 1 nibble in BCD}
stage: SignedByte; {stage code: dev, alpha, beta, final}
nonRelRev: SignedByte);{revision level of non-released version}
1: (version: LONGINT); {to use all 4 fields at one time}
end;
stage is one of: $20 = development
$40 = alpha
$60 = beta
$80 = final
About this list
===============
The Gestalt Manager is a collection of system routines which allows
applications to test for the availability of software and hardware. Because
of the increasing number of different software and hardware configurations,
this is getting an important issue. It probably already is and known by the
term 'compatability'.
The Gestalt function allows applications to obtain information about the
current configuration. Selectors are used to refer to certain information.
A selector is of type OSType (a four byte value) and usually contain four
ASCII characters. For example: the selector 'sysv' causes the version of
the current system is returned. Other functions, NewGestalt and
ReplaceGestalt, allow programmers to install their own Gestalt selectors.
Programmers need to know these selectors beforehand to be able to request
and interpret the value returned by the Gestalt function.
See for more detailed information on how to use the Gestalt Manager
routines Inside Macintosh part VI (old series). The new Inside
Macintosh: Operating System Utilities replaces IM VI.
The Driver Gestalt calls (status calls to device drivers) are not covered
by this list.
When you already have one or more of the new IM issues you may be a bit
disappointed. I was, because of the very minimal information provided
regarding the availability of the system routines. Of most routines you
will find no information on how to test their availability.
This Gestalt Selectors List intends to list all known selectors, but in
reality this means it lists all selectors known to the editor.
I would like to see this list to be a combined effort by different persons
who have together access to a wide area of information.
This list may contain (educated?) guesses and perhaps even false
information, so no guarantee is made about the contents.
You may use this information freely (see Legal Stuff section below), but
when you find information not included with this list; please tell me. If
you have additions, corrections, comments, suggestions, news about
available software, etc., mail it me. Please, also mention the source you
used, if any.
You can send contributions, remarks, etc. to this email address:
gestalt-selectors-list@bio.vu.nl
If you want to remain anonymous, please mention this and it will be taken
care of.
I don't have all the documentation or knowledge and I don't want to, and
I'am certainly not Mr.Gestalt.
Availability
------------
If you downloaded this list from CompuServe, a BBS, or any other service,
you will notice some strange things like 'FTP-sites' which have to do
with the fact that this list originates from INTERNET.
You can access the mail archive server also from CompuServe, AOL and
AppleLink. Contact your network provider for information on how to send
email to an INTERNET site.
This list is available in the following ways:
**INTERNET**
USENET newsgroup comp.sys.mac.programmer (c.s.m.p.)
This list has become too large to post to c.s.m.p., so starting from
version 2.2 this list is no longer posted there. Instead an announcement
will be posted informing were you can find the latest version.
FTP-SITE
sumex-aim.stanford.edu [36.44.0.6]
Every minor and major version is submitted to the info-mac archives:
ftp://sumex-aim.stanford.edu/info-mac/dev/info/gestalt-selectors-XX.hqx
It is also available on its mirror sites.
Contact: Info-Mac Moderator (info-mac-request@sumex-aim.stanford.edu)
FINGER
Using Finger to obtain the latest version is no longer possible.
WWW
The GSL is also available for World Wide Web users together with other
Macintosh FAQs at:
http://www.astro.nwu.edu/lentz/mac/faqs/source/gestalt.html
Contact: Robert Lentz (lentz@rossi.astro.nwu.edu)
**COMPUSERVE**
Starting with version 2.0 this list is uploaded to the Macintosh Developers
Forum (MACDEV). Only new minor and major versions will be uploaded once. It
then appears in the Tools/Debuggers (13) section.
**AMERICA ONLINE (AOL)**
The GSL doesn't have it's permanent place on AOL but is uploaded from
Internet. Do a file search (keyword: FileSearch) to find it.
Contact: Jonathan Kleid (SonOfaBitS@aol.com)
**GENERAL**
CD-ROM or BBS
Because of permissions I granted you may get this list from a CD-ROM or via
a BBS from Internet, CompuServe or a CD-ROM. If you do, and the release was
more than two months ago, there is probably already a newer version.
MAILING LIST
Every person on the mailing list automatically receives an update by email
whenever there are some changes. If you want to subscribe or unsubscribe to
this mailing list you need to send an email to this address:
gestalt-selectors-list-request@bio.vu.nl
Then put in the subject line either 'subscribe' or 'unsubscribe'.
The mailing list is moderated, which means everybody can email to:
gestalt-selectors-list@bio.vu.nl
But only after approval of the moderator the other subscribers will receive
your posting. This guarantees that no confidential contribution is
distributed before the moderator sees it.
If mail to you bounces four times you're automatically unsubscribed.
This service is only possible to those who have an account on Internet or
any other network reachable from Internet (CompuServe, AOL, AppleLink,
Fidonet). I can not provide mailing of printed versions or on disk by
normal surface mail.
MAIL ARCHIVE SERVER
You can retrieve the latest versions of this list and other software
by sending an email to this address:
gestalt-selectors-list-request@bio.vu.nl
In the subject line you need to enter 'archive' and then put one command
behind it or only 'archive' in the subject line with one of more commands
in the body of your email preceded by the keyword 'archive'. These commands
can be:
help to get some help on using the archive server
ls <dir> to list the contents of the specified directory
get <dir>/<file> to have the specified file sent to you by email.
To obtain the abstracts of all files available you can use this command:
archive get ABSTRACTS
Your actions may be logged.
PRINTED
If you want this list printed on paper you may want to try a feature
included with the LaserWriter 8 software. With it you can print four
pages on a single sheet of paper. When you set the page breaks correct,
this produces a very neat, little booklet.
Acknowledgements
----------------
I want to thank the following persons for their contribution to this list:
===========================================================================
Name Internet Email Address
---------------------------------------------------------------------------
Anonymous contributor(s) anonymous@secret.cia
Lonnie R. Abelbeck abelbeck@dev.abelbeck.com
Daniel Azuma dazuma@cco.caltech.edu
J.D. Sterling Babcock jdsb@ee.duke.edu
John Baxter jwbaxter@pt.olympus.net
Martin Bestmann kruemel@theorie3.physik.uni-erlangen.de
Mason L. Bliss mason@cis.umassd.edu
Scott Bronson urge@mcl.mcl.ucsb.edu
Jim Browne jbrowne@ncsa.uiuc.edu
Richard Buckle richardb@cocytus.demon.co.uk
Ivan M Cavero Belaunde ivanski@world.std.com
John Champion denali@metronet.com
Mike Cohen isis@netcom.com
Marc Cooperman coopem@panix.com
Mark Dawson marc@apple.com
Lawrence D'Oliveiro ldo@waikato.ac.nz
Dave Falkenburg, Apple Computer Inc. falken@apple.com
Rick Gansler gansler@boardwalk.tiac.net
M. David Greenspon gremicf@yalevm.ycc.yale.edu
C.K. Haun haun@apple.com
Michael Hecht Michael_Hecht@mac.sas.com
Robert Hess robert_hess@macweek.ziff.com
Bill Hofmann wdh@netcom.com
Mark B. Johnson mjohnson@apple.com
David B. Lamkins dblamkins@aol.com
Robert Lentz lentz@rossi.astro.nwu.edu
David Lewis lewis@netcom.com
Spencer Low spencerl@crl.com
John Mancino, Decision Maker's Software mancino@decismkr.com
Roland Mansson roland.mansson@ldc.lu.se
Matsubayashi Kohji matubays@ics.es.osaka-u.ac.jp
Duane Murphy, Novell Inc. damurphy@wc.novell.com
Mark Nagata nagata@kurims.kyoto-u.ac.jp
Fabrizio Oddone gspnx@di.unito.it
Carl R. Osterwald cro@br213mail.nrel.gov
Marco Piovanelli piovanel@ghost.dsi.unimi.it
Kees Pols kpols@bio.vu.nl
Francois Pottier pottier@clipper.ens.fr
Jon Pugh jonpugh@netcom.com
Quinn quinn@cs.uwa.edu.au
Dave Radcliffe, Apple Computer Inc. radcliff@apple.com
Thomas Reed reed@telesphere.wustl.edu
Pete Resnick resnick@cogsci.uiuc.edu
Paul Reznick PRzeznik@aol.com
Alex Rosenberg, Apple Computer Inc. alexr@apple.com
Leonard Rosenthol leonardr@netcom.com
Jeremy Roussak jeremyr@dcs.qmw.ac.uk
Ray Sanders 72511.232@CompuServe.COM
Eric Schlegel, Microsoft Corporation ericsc@microsoft.com
Marc Schrier schrier@garnet.berkeley.edu
Mark Simmons 72511.256@CompuServe.COM
Brian Stern Jaeger@fquest.com
Zalman Stern zalman@adobe.com
Tim Swihart tim_swihart@quickmail.apple.com
Ilan Szekely ILANS@ds.huji.ac.il
Victor Tan victort@extro.ucc.su.oz.au
Rodrigo Torres, Berkeley Systems brklysystm@aol.com
Hans Verbrugge hverbrug@inter.nl.net
John Watte d88-jwa@nada.kth.se
Jonathan Wilson toast@diss.hyphen.com
Chris Wysocki wysocki@netcom.com
---------------------------------------------------------------------------
And my colleagues at the Computer Department of the Biology Faculty of the
Vrije University in Amsterdam, The Netherlands for their help and support.
Also special thanks to Marco Piovanelli for his support and comments about
preliminary versions and updates.
The persons mentioned above provided information used in this list. They
did this on personal title, NOT on behalf of their employer, unless
explicitly stated otherwise.
I assume information you mail to me about Gestalt selectors may be used in
this list. Information made available to the general public (e.g. a posting
to a USENET newsgroup) is also included and the persons name added to this
section (and to the mailing list).
I will mail you back to thank you and include the parts from the list which
were changed, according to the information you provided, to let you check
them.
Legal Stuff
-----------
(c) 1992-1995, Rene G.A. Ros
NOTICE OF LIABILITY
The information in this list is distributed on an "AS IS" basis, without
warranty. While every precaution has been taken in the preparation of this
list, neither the editor nor any contributor shall have any liability to
any person or entity with respect to any liability, loss, or damage caused
or alleged to be caused directly or indirectly by the information contained
in this list or by the computer software and hardware products described
herein.
TRADEMARKS
Throughout this list trademarked names are used. Rather than put a
trademark symbol in every occurrence of a trademarked name, I state I am
using the names only in an editorial fashion and to the benefit of the
trademark owner with no intention of infringement of the trademark.
DISTRIBUTION
The information in this list may be used freely. When you use the
information in this list for COMMERCIAL purposes, you may consider sending
the editor a donation. You are not allowed to distribute this list outside
any computer network (especially printed, on disk or CD-ROM) unless you
have contacted the editor and received permission to do so. This is also to
ensure you have the latest version. The updates may not be distributed,
these are ONLY for the persons on the mailing list.
You are not allowed to use excerpts of this list with your documentation or,
in any other way, without prior permission of the editor. You will receive
permission to include excerpts when you are subscribed to the mailing list.
In any case you should give the GSL proper credit in your software or in
the documentation.
Permission for distribution of the full list is granted to:
Aladdin Systems (InstallerMaker software)
Arizona Macintosh Users Group (BBS in a BOX CD-ROM)
Celestin Company (Apprentice CD-ROM)
Club Macintosh de Quebec
CP Shareware
IDG Communications Nederland (MacWorld CD-ROM)
Pacific HiTech, Inc. (Info-Mac CD-ROM)
Quantum Technologies, Inc. (The Right Stuffed CD-ROM)
You are not allowed to distribute modified versions of this list,
including, but not limited to, deleting, adding or moving text or adding
non-text parts. Distribution in any electronical format except a normal
(or compressed) text file is not allowed without permission.
You are not allowed to redistribute it with any other name than
'gestalt-selectors-XX.YYY' (where XX is the version number and YYY the
suffix to indicate compression etc.) unless because of technical reasons.
In such case a name should be chosen which resambles it as closely as
possible to avoid confusion.
Editors' Address
----------------
Rene G.A. Ros
student Computer Science (fulltime),
Hogeschool van Amsterdam (Institute of Technology)
member Computer Department (parttime),
Biology Faculty, Vrije University Amsterdam
contract programmer Pascal and C, also 4th Dimension and other data-bases
Internet : rgaros@bio.vu.nl (preferred)
rgaros@nikhefk.nikhef.nl
rgaros@htsa.hva.nl
rgaros@dds.hacktic.nl
CompuServe: >INTERNET: rgaros@bio.vu.nl
100112,1363
Mailing list:
Internet contributions:
gestalt-selectors-list@bio.vu.nl
to subscribe/unsubscribe and for the archive server:
gestalt-selectors-list-request@bio.vu.nl
CompuServe contributions:
>INTERNET: gestalt-selectors-list@bio.vu.nl
to subscribe/unsubscribe and for the archive server:
>INTERNET: gestalt-selectors-list-request@bio.vu.nl
Please contact me at the INTERNET address. I read my mail there almost
daily, while I log on to CompuServe only once or twice a month.